根据 R 中的另一个文件替换文件中的值
Replace values in a file based on another file in R
我有:我有两个数据框。它们都具有相同的列名和行名以及相同的维度(行数和列数相等):
records <- read.table(text =" D0 D1 D2 D3
1 0 0 1 NA
2 1 1 1 1
3 1 0 NA 1
4 0 NA 0 0", header = TRUE)
covariate <- read.table(text =" D0 D1 D2 D3
1 70 1 6 3
2 121 4 8 5
3 86 3 2 4
4 141 2 5 2", header = TRUE)
我想要的: 用 NA 替换 'covariate' 数据框中的特定值。要替换的值是那些与 'records' 具有 NA 的位置完全相同的值。结果应如下所示:
covariate_fixed <- read.table(text =" D0 D1 D2 D3
1 70 1 6 NA
2 121 4 8 5
3 86 3 NA 4
4 141 NA 5 2", header = TRUE)
我能找到的与我的问题最接近的线程是:Replace values from another dataframe by IDs and Replace values from another dataframe by IDs但是,除了列名和行名之外,我在两个文件中都没有匹配值,并且没有给出替换规则通过特定 ID 但针对数据框中的特定位置。我也找到了其他类似性质的帖子,但 none 我可以找到一种方法来适应我的具体问题。
有人可以帮我用 R 编写代码来执行此操作吗?谢谢!
is.na(covariate) <- is.na(records)
给予
> covariate
D0 D1 D2 D3
1 70 1 6 NA
2 121 4 8 5
3 86 3 NA 4
4 141 NA 5 2
提示:
is.na<-
对找东西很有用
- DF 和矩阵可以通过
i,j
或仅 i
进行索引,因此当维度相同时,您不必考虑将一个数据框的属性复制到另一个数据框.
给你。此代码逐列进行,仅将协变量中的数字替换为记录中的 NA 值。
for(i in 1:ncol(covariate)){
covariate[is.na(records[,i]),i] <- records[is.na(records[,i]), i]
}
print(covariate)
我有:我有两个数据框。它们都具有相同的列名和行名以及相同的维度(行数和列数相等):
records <- read.table(text =" D0 D1 D2 D3
1 0 0 1 NA
2 1 1 1 1
3 1 0 NA 1
4 0 NA 0 0", header = TRUE)
covariate <- read.table(text =" D0 D1 D2 D3
1 70 1 6 3
2 121 4 8 5
3 86 3 2 4
4 141 2 5 2", header = TRUE)
我想要的: 用 NA 替换 'covariate' 数据框中的特定值。要替换的值是那些与 'records' 具有 NA 的位置完全相同的值。结果应如下所示:
covariate_fixed <- read.table(text =" D0 D1 D2 D3
1 70 1 6 NA
2 121 4 8 5
3 86 3 NA 4
4 141 NA 5 2", header = TRUE)
我能找到的与我的问题最接近的线程是:Replace values from another dataframe by IDs and Replace values from another dataframe by IDs但是,除了列名和行名之外,我在两个文件中都没有匹配值,并且没有给出替换规则通过特定 ID 但针对数据框中的特定位置。我也找到了其他类似性质的帖子,但 none 我可以找到一种方法来适应我的具体问题。
有人可以帮我用 R 编写代码来执行此操作吗?谢谢!
is.na(covariate) <- is.na(records)
给予
> covariate
D0 D1 D2 D3
1 70 1 6 NA
2 121 4 8 5
3 86 3 NA 4
4 141 NA 5 2
提示:
is.na<-
对找东西很有用- DF 和矩阵可以通过
i,j
或仅i
进行索引,因此当维度相同时,您不必考虑将一个数据框的属性复制到另一个数据框.
给你。此代码逐列进行,仅将协变量中的数字替换为记录中的 NA 值。
for(i in 1:ncol(covariate)){
covariate[is.na(records[,i]),i] <- records[is.na(records[,i]), i]
}
print(covariate)