R:如何在聚合命令后计算每个单元格中的元素

时间:2017-03-24 16:47:09

标签: r

原始my.data

my.data <- data.frame(
  ID = c(1,1,2,2,2),
  Value = c(3,4,2.1,3.4,5)
)

ID        Value
1         3
1         4
2         2.1
2         3.4
2         5

数据由aggregate合并,如下所示

consol <- aggregate(Value ~ID, my.data, paste)

consol看起来像这样:

ID      Value
1       c("3", "4")
2       c("2.1", "3.4", "5")

如何计算valueconsol的元素数量?即使consol[1,2]显示"3" "4"length(consol[1,2])也会显示1的值。实际上,Value列中的所有单元格的长度均为1。我希望consol[1,2]的长度为2,consol[2,2]的长度为3。

2 个答案:

答案 0 :(得分:1)

lapply(consol$Value, function(x) length(x))

答案 1 :(得分:0)

元素聚合到列表中。该字段中只有一个列表,但该列表包含多个元素。因此,要获得列表中的元素数量,您需要像这样打开它:

length(consol[1,2][[1]])

另见:

class(consol[1,2])
> [1] "list"
class(consol[1,2][[1]])
> [1] "character"