迭代子集行&;用于替换R中映射表中的值的列
我想替换迭代子集行&;用于替换R中映射表中的值的列,r,dplyr,subset,R,Dplyr,Subset,我想替换df中特定列的值,这些值与mapping\u df中的from变量相匹配变量应与df中的列名匹配 mapping_df <- read.table(text = " variable from to b 1 X c 1 Y ", header = TRUE, stringsAsFactors = FALSE) df <- read.table(text = " a b c d
df
中特定列的值,这些值与mapping\u df
中的from
变量相匹配<映射中的code>变量
应与df中的列名匹配
mapping_df <- read.table(text = " variable from to
b 1 X
c 1 Y ", header = TRUE, stringsAsFactors = FALSE)
df <- read.table(text = " a b c d
X 1 1 3 0
Y 1 2 2 0
Z 0 3 1 0 ", header = TRUE, stringsAsFactors = FALSE)
mapping_df删除get
并改为子集
for(i in 1:nrow(mapping_df)){
df[df[, mapping_df[i, 'variable']] == mapping_df[i, 'from'], mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}
> df
a b c d
X 1 X 3 0
Y 1 2 2 0
Z 0 3 Y 0
for(1中的i:nrow(映射){
df[df[,mapping_-df[i',variable']]==mapping_-df[i',from'],mapping_-df[i',variable']]df
a、b、c、d
x1x30
Y 12 2 0
z03y0
manotheshark的答案对我很有用
我还发现我可以为基本子集的行提交一个索引,最终也可以正常工作
for(i in 1:nrow(mapping_df)){
index <- which(df[,mapping_df[i, 'variable']] == mapping_df[i, 'from'])
df[index , mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}
for(1中的i:nrow(映射){
我明白了,谢谢你的回答!我还通过创建一个索引并按索引对行进行子集来解决这个问题。我也将发布我的答案。
for(i in 1:nrow(mapping_df)){
df[df[, mapping_df[i, 'variable']] == mapping_df[i, 'from'], mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}
> df
a b c d
X 1 X 3 0
Y 1 2 2 0
Z 0 3 Y 0
for(i in 1:nrow(mapping_df)){
index <- which(df[,mapping_df[i, 'variable']] == mapping_df[i, 'from'])
df[index , mapping_df[i, 'variable']] <- mapping_df[i, 'to']
}