table()对我的数据进行逐个计数

时间:2017-12-15 20:25:26

标签: r count

R中的

,如果我有一个数据结构my_data,如:

participant var score
`
1           a   ... 
            b   ...
            c   ...
            a   ...
2           b   ...
            a   ...
            c   ...
            c   ...
3           b   ...
            c   ...
            a   ...
            b   ...

我编写函数来计算var的频率,通过表(my_data $ participant,my_data $ var),结果是:

   a  b  c
1  1  0  0
2  0  1  0
3  0  1  0

虽然它应该是

   a  b  c
1  2  1  1
2  1  1  2
3  1  2  1

这种情况发生的原因是该功能仅选择参与者'不是空的。 是否有一种默认方式告诉软件将那些空行与同一参与者相关联?

1 个答案:

答案 0 :(得分:1)

您可以使用zoo包中的na.locf

# sample data
my_data = data.frame(participant=c("1","","","2","",""),var = c("a","a","b","a","a","c"),stringsAsFactors = F)

library(zoo)
# first, replace empty elements with NA, then use na.locf
my_data$participant[nchar(my_data$participant)==0]=NA
my_data$participant = na.locf(my_data$participant)
table(my_data$participant, my_data$var)

输出:

    a b c
  1 2 1 0
  2 2 0 1

希望这有帮助!