计数传染媒介的元素连续在桌里

时间:2017-11-20 11:08:38

标签: r vector dplyr counter

我有以下问题。假设我在数据框中有一列,一列中的值是向量,对于每一行数据,我想计算该特定向量中的元素数,例如。

ID, brands
1, c("brand1", "brand2", "brand3")
2, c("brand4")
3, c("brand5", "brand7")

并使用dplyr我想添加' counter'列,告诉我有多少元素在行中有特定的向量,例如

ID, brands, counter
1, c("brand1", "brand2", "brand3"), 3
2, c("brand4"), 1
3, c("brand5", "brand7"), 2

我使用了counter = length(brands)但是它给出了框架中的总行数。

1 个答案:

答案 0 :(得分:3)

使用lengths代替length

df <- data.frame(
  ID=1:3, 
  brands=I(list(
    c("brand1", "brand2", "brand3"),
    c("brand4"),
    c("brand5", "brand7")
  ))
)
df$n <- lengths(df$brands)           
df
# ID       brands n
# 1  1 brand1, .... 3
# 2  2       brand4 1
# 3  3 brand5, .... 2