我有一个大数据集 df ;它的简短版本如下:
Time Block Accuracy
6087.8 Run2 NA
633.2 Run2 NA
547 Run2 incorrect
135.2 Run2 NA
6217.6 Run2 NA
175.2 Run2 NA
179 Run2 incorrect
我想在df $ Accuracy的上一行中复制值不正确的,所以它看起来像这样:
Time Block Accuracy
6087.8 Run2 NA
633.2 Run2 incorrect
547 Run2 incorrect
135.2 Run2 NA
6217.6 Run2 NA
175.2 Run2 incorrect
179 Run2 incorrect
最有效的方法是什么?
答案 0 :(得分:1)
要查看将受影响的行,请运行:
which(df$Accuracy == "incorrect")-1
which()
返回对于特定布尔语句为true的向量元素(在这种情况下,Accuracy的值等于不正确)。然后我们从向量中的每个值减1,得到前面的行位置。
然后我们可以修改它们:
df[which(df$Accuracy == "incorrect")-1, "Accuracy"] <- "incorrect"
这会查找上面的所有行,并说:对于那些行和列&#34; Accuracy&#34;,将值替换为&#34;不正确&#34;。
答案 1 :(得分:0)
您可以在每个"incorrect"
下方创建值,而不是硬编码NA
。
na_bool = is.na(df$Accuracy)
df[na_bool,]$Accuracy = df[c(FALSE,na_bool[-length(na_bool)]),]$Accuracy