【发布时间】:2014-11-03 10:21:08
【问题描述】:
我有一个如下所示的数据框测试:
ID Month1 Month2 Month3 Month4 Month5 Month6 Month7 Month8
A 0 1 1 1 1 0 0 0
B 0 1 1 1 0 0 NA NA
C 0 0 0 0 NA NA NA NA
D 0 1 1 1 1 1 1 1
E 0 1 1 0 0 0 1 1
F 0 0 0 1 1 1 1 1
G 0 0 1 1 0 0 0 0
H 0 0 0 0 0 0 0 0
我想在数据框中创建一个条件变量“Result”,用于计算 1 连续重复的次数。但是,我只想计算后跟 0 的第一组 1,这意味着在创建“Result”变量时需要牢记三个条件。 条件如下:
条件一: 计算以 0 结尾的第一组 1。
条件 2: 如果1的集合不以0结尾或以NA结尾,则Result=NA
条件 3 如果有两组以 0 结尾的 1,则忽略第二组。
ID Month1 Month2 Month3 Month4 Month5 Month6 Month7 Month8 Result
A 0 1 1 1 1 0 0 0 4
B 0 1 1 1 0 0 NA NA 3
C 0 0 0 0 NA NA NA NA 0
D 0 1 1 1 1 1 1 1 NA
E 0 1 1 0 0 0 1 1 2
F 0 0 0 1 1 1 1 1 NA
G 0 0 1 1 0 0 0 0 2
H 0 0 0 0 0 0 0 0 0
到目前为止我已经尝试过:
test$Result=apply(test[,c(2:9)],1,function(x) length(x[x==1&!(is.na(x))]))
这会计算行中 1 的总数,而不仅仅是第一组。
任何和所有的帮助将不胜感激。
【问题讨论】:
标签: r conditional