【发布时间】:2020-08-16 14:24:40
【问题描述】:
我一直在尝试使用 for 循环来分配 NA,但它不起作用,我知道有可能最简单的方法来做到这一点。
我想创建一个额外的列(就像示例中名为 Desire_Output 的列一样),我将在其中将 NA 分配给 Value 列中数字大于 1 的任何行。此外,我想将 NA 分配给接下来的两行。如果 Value 列中有 NA,只需将 NA 也放入所需的输出列中即可。
示例如下:
Event<- c(1,2,2,2,2,2,2,3,3,4,4,4,4,4,5,6,6,6,7)
Value<- c(5,3,0,0,0,2,0,1,10,0,0,NA,NA,NA,1,0,8,0,0)
Desire_output<- c(NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,NA,NA,NA)
A<- data.frame(Event,Value,Desire_output)
Event Value Desire_output
1 1 5 NA
2 2 3 NA
3 2 0 NA
4 2 0 NA
5 2 0 0
6 2 2 NA
7 2 0 NA
8 3 1 NA
9 3 10 NA
10 4 0 NA
11 4 0 NA
12 4 NA NA
13 4 NA NA
14 4 NA NA
15 5 1 1
16 6 0 0
17 6 8 NA
18 6 0 NA
19 7 0 NA
这是我尝试做的,但是当我在 Value 列中找到 NA 时,我开始遇到一些麻烦。
for (f in 1:(nrow(A)-1)){
if(A$Value2[f] > 1){
A$Value2[f]<- NA
A$Value2[f+1]<- NA
A$Value[f+2]<- NA
}else{
}
}
如果您有任何其他方法最简单的方法,请告诉我。
【问题讨论】:
标签: r dataframe for-loop if-statement dplyr