R将函数应用于数据框的每一行,将结果存储在同一数据框的新列中

s_boardman

我想将一个函数应用于datafame的每一行,并将结果存储在同一dataframe中的新列中。该函数查看Age.At.Event的值,并返回其所属的Age.Category。

这是数据帧:

dput(so_example)
structure(list(Age.At.Event = c(4L, 9L, 7L, 13L, 13L, 13L, 11L, 
11L, 14L, 4L, 15L, 14L, 3L, 12L, 12L, 8L, 13L, 11L, 11L, 11L), 
    Dosage = c(4.9, 0, 3.9, 2.54, 5.51, 24.75, 4.99, 36.59, 2.69, 
    0.83, 2.36, 45.01, 0.96, 1.53, 0.97, 1.2, 4.96, 38.99, 5.95, 
    0), Dosage.typ = structure(c(10L, 7L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L), .Label = c("", "CGYCM2", "DGYCM2", "DLP", "GYCM2", 
    "MGY", "MGYCM", "MGYCM2", "MGYM2", "UGYM2"), class = "factor"), 
    kVp = c(70, 0, 66, 0, 0, 70, 70, 80, 63, 70, 66, 0, 70, 85, 
    60, 90, 70, 80, 70, 70), mAs = c(2, 0, 1.2, 0, 0, 2, 1.1, 
    4.9, 1, 1.6, 0.9, 0, 2, 1.7, 0.9, 1.4, 2, 3.2, 1.5, 1.5)), .Names = c("Age.At.Event", 
"Dosage", "Dosage.typ", "kVp", "mAs"), row.names = c(1L, 2L, 
3L, 4L, 5L, 6L, 8L, 9L, 10L, 15L, 16L, 17L, 18L, 19L, 20L, 22L, 
23L, 24L, 25L, 26L), class = "data.frame")

so_example
   Age.At.Event Dosage Dosage.typ kVp mAs
1             4   4.90      UGYM2  70 2.0
2             9   0.00      MGYCM   0 0.0
3             7   3.90      UGYM2  66 1.2
4            13   2.54      UGYM2   0 0.0
5            13   5.51      UGYM2   0 0.0
6            13  24.75      UGYM2  70 2.0
8            11   4.99      UGYM2  70 1.1
9            11  36.59      UGYM2  80 4.9
10           14   2.69      UGYM2  63 1.0
15            4   0.83      UGYM2  70 1.6
16           15   2.36      UGYM2  66 0.9
17           14  45.01      UGYM2   0 0.0
18            3   0.96      UGYM2  70 2.0
19           12   1.53      UGYM2  85 1.7
20           12   0.97      UGYM2  60 0.9
22            8   1.20      UGYM2  90 1.4
23           13   4.96      UGYM2  70 2.0
24           11  38.99      UGYM2  80 3.2
25           11   5.95      UGYM2  70 1.5
26           11   0.00      UGYM2  70 1.5

我编写了一个函数,该函数接受输入(每行中特定列的值),并根据该值返回类别(编码为字符串)。这是我的功能:

ageCategories <- function(x){
  if(x < 1) "0-1"
  else if(x >= 1 & x < 4) "1-3"
  else if(x >= 4 & x < 8)  "4-7"
  else if(x >= 8 & x < 12) "8-11"
  else if(x >= 12 & x < 16) "12-16"
}

我希望输出看起来像这样:

   Age.At.Event Dosage Dosage.typ kVp mAs Age.Category
1             4   4.90      UGYM2  70 2.0   4-7
2             9   0.00      MGYCM   0 0.0  8-11
3             7   3.90      UGYM2  66 1.2   4-7
4            13   2.54      UGYM2   0 0.0 12-16
5            13   5.51      UGYM2   0 0.0 12-16
6            13  24.75      UGYM2  70 2.0 12-16
8            11   4.99      UGYM2  70 1.1  8-11
9            11  36.59      UGYM2  80 4.9  8-11
10           14   2.69      UGYM2  63 1.0 12-16
15            4   0.83      UGYM2  70 1.6   4-7
16           15   2.36      UGYM2  66 0.9 12-16
17           14  45.01      UGYM2   0 0.0 12-16
18            3   0.96      UGYM2  70 2.0   1-3
19           12   1.53      UGYM2  85 1.7 12-16
20           12   0.97      UGYM2  60 0.9 12-16
22            8   1.20      UGYM2  90 1.4  8-11
23           13   4.96      UGYM2  70 2.0 12-16
24           11  38.99      UGYM2  80 3.2  8-11
25           11   5.95      UGYM2  70 1.5  8-11
26           11   0.00      UGYM2  70 1.5  8-11

该函数可以与单个数字输入正常工作,但是我似乎无法使它在数据框中的行上正常工作。

我尝试用几种不同的方式调用它,如下所示,但是有点卡住了。我怀疑我的答案在plyr包装内,但也没有运气使它起作用。有人可以告诉我我做错了什么吗?

so_example$Age.Category <- apply(so_example, 1, ageCategories(.(Age.At.Event)))

ageCategories(。(Age.At.Event))中的错误:(list)对象不能被强制键入“ double”

so_example[,Age.Category:=sapply(Age.At.Event,ageCategories)][]

错误[.data.frame(so_example,:=(Age.Category,sapply(Age.At.Event,:找不到功能“:=”

阿克伦
so_example$Age.Category <- cut(so_example$Age.At.Event, 
         breaks=c(-Inf, 1,3,7,11,16), labels=c('0-1', '1-3', '4-7', '8-11','12-16')) 

 so_example
#   Age.At.Event Dosage Dosage.typ kVp mAs Age.Category
#1             4   4.90      UGYM2  70 2.0          4-7
#2             9   0.00      MGYCM   0 0.0         8-11
#3             7   3.90      UGYM2  66 1.2          4-7
#4            13   2.54      UGYM2   0 0.0        12-16
#5            13   5.51      UGYM2   0 0.0        12-16
#6            13  24.75      UGYM2  70 2.0        12-16
#8            11   4.99      UGYM2  70 1.1         8-11
#9            11  36.59      UGYM2  80 4.9         8-11
#10           14   2.69      UGYM2  63 1.0        12-16
#15            4   0.83      UGYM2  70 1.6          4-7
#16           15   2.36      UGYM2  66 0.9        12-16
#17           14  45.01      UGYM2   0 0.0        12-16
#18            3   0.96      UGYM2  70 2.0          1-3
#19           12   1.53      UGYM2  85 1.7        12-16
#20           12   0.97      UGYM2  60 0.9        12-16
#22            8   1.20      UGYM2  90 1.4         8-11
#23           13   4.96      UGYM2  70 2.0        12-16
#24           11  38.99      UGYM2  80 3.2         8-11
#25           11   5.95      UGYM2  70 1.5         8-11
#26           11   0.00      UGYM2  70 1.5         8-11

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用聚合将多个函数应用于数据框中的每一列

来自分类Dev

熊猫将函数应用于数据框的每一行,以每个条目返回一个或多个新行

来自分类Dev

将函数应用于引用前一行数据的数据框行

来自分类Dev

通过将函数应用于数据框的每一行来创建具有命名值的列表

来自分类Dev

R - 将函数应用于数据帧的每一行,函数的参数是来自每一行的值

来自分类Dev

将函数应用于数据框的某些列,同时将结果存储在原始数据框中

来自分类Dev

R将计算应用于数据框的每一行和每一列

来自分类Dev

将函数应用于R中的数据框的列,编译结果

来自分类Dev

通过将函数应用于另一个数据框的列来创建新的数据框

来自分类Dev

如何将函数应用于数据框中的一定数量的行?

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

Pandas_udf 问题:将函数应用于数据为 ArrayType 的每一行

来自分类Dev

R:按因子将函数应用于数据帧的每一行,在函数中调用一个值(按因子)

来自分类Dev

R:按因子将函数应用于数据帧的每一行,在函数中调用一个值(按因子)

来自分类Dev

将自定义函数应用于R中数据帧中每一行的两列

来自分类Dev

将函数应用于ndarray的每一行

来自分类Dev

将函数应用于ndarray的每一行

来自分类Dev

将数据框的每一列除以数据框的一行

来自分类Dev

将一个数据框的每一列与另一数据框列进行比较,并将每个结果重叠打印到单独的文件中

来自分类Dev

将函数应用于R中数据框的列中的每个单元格

来自分类Dev

将函数应用于数据框

来自分类Dev

使用R将函数应用于数据框中两列的每个组合

来自分类Dev

将数据框列中的列表应用于另一列

来自分类Dev

如何重新计算列并将新值存储在同一数据框中?

来自分类Dev

将功能列表应用于R中另一个数据框中的行

来自分类Dev

将一些功能应用于列表中数据框的列

来自分类Dev

如何将数据框中的特定列与同一数据框中的一个特定列相乘?

来自分类Dev

如何将数据框中的特定列与同一数据框中的一个特定列相乘?

Related 相关文章

  1. 1

    使用聚合将多个函数应用于数据框中的每一列

  2. 2

    熊猫将函数应用于数据框的每一行,以每个条目返回一个或多个新行

  3. 3

    将函数应用于引用前一行数据的数据框行

  4. 4

    通过将函数应用于数据框的每一行来创建具有命名值的列表

  5. 5

    R - 将函数应用于数据帧的每一行,函数的参数是来自每一行的值

  6. 6

    将函数应用于数据框的某些列,同时将结果存储在原始数据框中

  7. 7

    R将计算应用于数据框的每一行和每一列

  8. 8

    将函数应用于R中的数据框的列,编译结果

  9. 9

    通过将函数应用于另一个数据框的列来创建新的数据框

  10. 10

    如何将函数应用于数据框中的一定数量的行?

  11. 11

    R将数据框中的每一列除以最后一行的值

  12. 12

    R将数据框中的每一列除以最后一行的值

  13. 13

    Pandas_udf 问题:将函数应用于数据为 ArrayType 的每一行

  14. 14

    R:按因子将函数应用于数据帧的每一行,在函数中调用一个值(按因子)

  15. 15

    R:按因子将函数应用于数据帧的每一行,在函数中调用一个值(按因子)

  16. 16

    将自定义函数应用于R中数据帧中每一行的两列

  17. 17

    将函数应用于ndarray的每一行

  18. 18

    将函数应用于ndarray的每一行

  19. 19

    将数据框的每一列除以数据框的一行

  20. 20

    将一个数据框的每一列与另一数据框列进行比较,并将每个结果重叠打印到单独的文件中

  21. 21

    将函数应用于R中数据框的列中的每个单元格

  22. 22

    将函数应用于数据框

  23. 23

    使用R将函数应用于数据框中两列的每个组合

  24. 24

    将数据框列中的列表应用于另一列

  25. 25

    如何重新计算列并将新值存储在同一数据框中?

  26. 26

    将功能列表应用于R中另一个数据框中的行

  27. 27

    将一些功能应用于列表中数据框的列

  28. 28

    如何将数据框中的特定列与同一数据框中的一个特定列相乘?

  29. 29

    如何将数据框中的特定列与同一数据框中的一个特定列相乘?

热门标签

归档