r - 将 NA 分配到 R 中的数据帧中
问题描述
我一直在尝试使用 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{
}
}
如果您有使用其他任何方法的最简单方法,请告诉我。
解决方案
您可以使用 ifelse。在下面的代码中,我在 ifelse 代码中使用了 OR 语句。
A$Desire_output<- ifelse(A$Value>1 | is.na(A$Value), NA, A$Value)
我希望这将有所帮助。
推荐阅读
- kubernetes - Kubernetes Pod 一次性初始任务
- vba - 如何仅替换字符串中的某些空格?
- omnet++ - 如何从 omnet++ 中的 c++ 代码访问运行时 queueLength 参数?
- sql - 将长 SQL 代码放入 VBA Excel 的最简单方法是什么?
- java - 如何从 Mockito Junit 正确调用超类方法
- c# - 是否有可能知道在 IEnumerable 上调用了哪些操作?
- android - 如何在 Android 项目中为单元测试提供自定义应用程序类
- java - 当我按下按钮调用我的函数时,我的应用程序崩溃了
- geoserver - Geoserver 为图像金字塔寻找 qix 文件
- javascript - 如果语句在 p5.js 中不起作用。为什么是这样?