,如果我有一个数据结构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
这种情况发生的原因是该功能仅选择参与者'不是空的。 是否有一种默认方式告诉软件将那些空行与同一参与者相关联?
答案 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
希望这有帮助!