R:为满足两个条件的某些数据设置一个值

标签 r dataframe

我不知道如何设置这个最简单的方法。我有一个名为 Test 的数据框,其中有一列包含一些 NA 值。现在我想将满足以下条件的所有字段设置为 1:

  1. 行数 > 60
  2. 如果特定字段中存在 NA

到目前为止我有:

Test$MyColumn[is.na(Test$MyColumn)] <- 1

这可行,但我不知道如何设置第二个条件:-/

最佳答案

如果在将元素更改为 1 之前必须同时满足这两个条件在 bb这是另一种选择:

aa <- 1:10
bb <- c(1,NA,6,4,NA,9,1,NA,2,5)
cc <- c(100,102,104,NA,78,54,99,NA,22,0)
dd <- data.frame(aa,bb,cc)
dd
dd$bb[4:nrow(dd)][is.na(dd$bb[4:nrow(dd)])] <- 1
dd

这是原始数据集:

   aa bb  cc
1   1  1 100
2   2 NA 102
3   3  6 104
4   4  4  NA
5   5 NA  78
6   6  9  54
7   7  1  99
8   8 NA  NA
9   9  2  22
10 10  5   0

这是修改后的数据集:

   aa bb  cc
1   1  1 100
2   2 NA 102
3   3  6 104
4   4  4  NA
5   5  1  78
6   6  9  54
7   7  1  99
8   8  1  NA
9   9  2  22
10 10  5   0

这会改变 NA如果有 NA,则在所有列的第 4-10 行中在 bb 的第 4-10 行中:

aa <- 1:10
bb <- c(1,NA,6,4,NA,9,1,NA,2,5)
cc <- c(100,102,104,NA,78,54,99,NA,22,0)
dd <- data.frame(aa,bb,cc)
dd
dd[4:nrow(dd),1:3][is.na(dd$bb[4:nrow(dd)]),] <- 1
dd

   aa bb  cc
1   1  1 100
2   2 NA 102
3   3  6 104
4   4  4  NA
5   1  1   1
6   6  9  54
7   7  1  99
8   1  1   1
9   9  2  22
10 10  5   0

这会改变 NA如果有 NA,则在所有列的第 4-10 行中在 bb 的第 4-10 行中然后它会更改所有剩余的 NAbb :

aa <- 1:10
bb <- c(1,NA,6,4,NA,9,1,NA,2,5)
cc <- c(100,102,104,NA,78,54,99,NA,22,0)
dd <- data.frame(aa,bb,cc)
dd
dd[4:nrow(dd),1:3][is.na(dd$bb[4:nrow(dd)]),] <- 1
dd$bb[is.na(dd$bb)] <- 1
dd

   aa bb  cc
1   1  1 100
2   2  1 102
3   3  6 104
4   4  4  NA
5   1  1   1
6   6  9  54
7   7  1  99
8   1  1   1
9   9  2  22
10 10  5   0

关于R:为满足两个条件的某些数据设置一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21877832/

相关文章:

python - 我从 Quandl 检索股票数据时哪里出错了?

scala - UnFlatten Dataframe 到特定结构

python - Pandas 数据框中并发调用分数之间的差异

r - 如何将函数映射到 R 中 tibble 中的每一行?

c++ - Rcpp:将 C++ 函数移植到 R,找不到 'Rcpp.h' 文件

python-3.x - 如何在 Python 中的多索引列中连接满足特定条件的 Pandas 数据框

python - Pandas Vectorization加速dataframe功能

R- 在持续时间/间隔内合并两个数据集

r - 从标签向量列表创建标签频率的数据框

删除 r 中的某些正则表达式