若行符合条件,则R中为TRUE或FALSE
我的嵌套数据如下所示:若行符合条件,则R中为TRUE或FALSE,r,R,我的嵌套数据如下所示: ID Date Behavior 1 1 FALSE 1 2 FALSE 1 3 TRUE 2 3 FALSE 2 5 FALSE 2 6 TRUE 2 7 FALSE 3 1 FALSE 3 2 TRUE 我想创建一个名为counter的列,在该列中,对于每个唯一的ID计数器将一个添加到下一行,直到行为=TRUE 我期待着这样的结果: ID Date Behavior cou
ID Date Behavior
1 1 FALSE
1 2 FALSE
1 3 TRUE
2 3 FALSE
2 5 FALSE
2 6 TRUE
2 7 FALSE
3 1 FALSE
3 2 TRUE
我想创建一个名为counter
的列,在该列中,对于每个唯一的ID
计数器将一个添加到下一行,直到行为
=TRUE
我期待着这样的结果:
ID Date Behavior counter
1 1 FALSE 1
1 2 FALSE 2
1 3 TRUE 3
2 3 FALSE 1
2 5 FALSE 2
2 6 TRUE 3
2 7 FALSE
3 1 FALSE 1
3 2 TRUE 2
最后,我想提取最小的计数器
,在该计数器中观察每个唯一ID。但是,我很难为当前的计数器
问题开发解决方案
非常感谢您的任何帮助
我想在每个唯一的
ID
s数组中创建一个计数器,并从中最终提取行级信息-问题是平均需要多长时间才能达到TRUE
我感觉这里可能会发生什么事。您可以直接回答后一个问题,如下所示:
> library(plyr)
> mean(daply(d, .(ID), function(grp)min(which(grp$Behavior))))
[1] 2.666667
(其中,
d
是您的数据帧。)这里有一个dplyr解决方案,它可以为每个ID中的每个TRUE查找行号:
library(dplyr)
newdf <- yourdataframe %>%
group_by(ID) %>%
summarise(
ftrue = which(Behavior))
库(dplyr)
新DF%
分组依据(ID)%>%
总结(
ftrue=哪个(行为))
do.call(rbind,by(df,by(df$ID),function(x){n=nrow(x);data.frame(x,Counter=c)(1:(我想在每个惟一的ID
s数组中创建一个计数器,并从那里最终提取行级信息-问题是平均需要多长时间才能达到TRUE
…您可以执行库(data.table);setDT(df)[计数器:=c(seq_len(which(Behavior)),rep(NA,.N-which(Behavior))),ID]
但我会选择@NPEs solution这是我想要做的-但是我得到了一个无效的'times'参数
错误。有没有常见的此类错误的嫌疑?我无法复制错误,但我猜它指的是'rep'中的times
参数。只有当每个ID
都发生一个错误时,这个解决方案才会起作用如果TRUE
,则会收到一个值,该值应为单个值
错误。
do.call(rbind, by(df, list(df$ID), function(x) {n = nrow(x); data.frame(x, Counter = c(1:(m<-which(x$Behavior)), rep(NA, n-m)))}))
ID Date Behavior Counter
1.1 1 1 FALSE 1
1.2 1 2 FALSE 2
1.3 1 3 TRUE 3
2.4 2 3 FALSE 1
2.5 2 5 FALSE 2
2.6 2 6 TRUE 3
2.7 2 7 FALSE NA
3.8 3 1 FALSE 1
3.9 3 2 TRUE 2
df = read.table(text = "ID Date Behavior
1 1 FALSE
1 2 FALSE
1 3 TRUE
2 3 FALSE
2 5 FALSE
2 6 TRUE
2 7 FALSE
3 1 FALSE
3 2 TRUE", header = T)