替换dataframe中与矩阵中的字符串匹配的字符串
我有一个数据帧替换dataframe中与矩阵中的字符串匹配的字符串,r,string,matrix,replace,match,R,String,Matrix,Replace,Match,我有一个数据帧df,有一系列NA和字符串,还有两个矩阵匹配和值,具有相同的ncol和nrowmatch在df 我想用value中的字符串替换df中的字符串。如果df中的字符串与match中的值匹配,则可以在相同位置用value中的字符串替换它 我相信第一步是创建一个新的df,它在df中的位置是匹配的 df1 <- which(df %in% match) #nothing valuable... df1我们可以取消列出数据帧,并将数据帧的元素与m1的元素进行匹配,并使用索引从值中获取相应
df
,有一系列NA和字符串,还有两个矩阵匹配和值
,具有相同的ncol
和nrow
match
在df
我想用value
中的字符串替换df
中的字符串。如果df
中的字符串与match
中的值匹配,则可以在相同位置用value
中的字符串替换它
我相信第一步是创建一个新的df,它在df中的位置是匹配的
df1 <- which(df %in% match) #nothing valuable...
df1我们可以取消列出
数据帧,并将
数据帧的元素与m1
的元素进行匹配,并使用索引从值
中获取相应的值
df[] <- value[match(unlist(df), m1)]
df
# V1 V2 V3 V4
#1 Good Stop Average Bad
#2 Bad <NA> Stop Good
#3 <NA> <NA> <NA> Good
df[]我们可以取消列出
数据框,并将
数据框的元素与m1
的元素进行匹配,并使用索引从值
中获取相应的值
df[] <- value[match(unlist(df), m1)]
df
# V1 V2 V3 V4
#1 Good Stop Average Bad
#2 Bad <NA> Stop Good
#3 <NA> <NA> <NA> Good
df[]这也应该有效
> m<-apply(df,2,function(x) match(x,match))
> df2<-as.data.frame(matrix(value[m],ncol =ncol(df),nrow=nrow(df)))
> df2
V1 V2 V3 V4
1 Good Stop Average Bad
2 Bad Average Stop Good
3 Average Stop Bad Good
>m df2 df2
V1 V2 V3 V4
1良好停止平均值不良
2坏的平均停止好
3平均停止坏的好的
这也应该有效
> m<-apply(df,2,function(x) match(x,match))
> df2<-as.data.frame(matrix(value[m],ncol =ncol(df),nrow=nrow(df)))
> df2
V1 V2 V3 V4
1 Good Stop Average Bad
2 Bad Average Stop Good
3 Average Stop Bad Good
>m df2 df2
V1 V2 V3 V4
1良好停止平均值不良
2坏的平均停止好
3平均停止坏的好的
我们可以将lappy
与匹配使用
df[] <- lapply(df, function(x) value[match(x, match)])
df
# V1 V2 V3 V4
#1 Good Stop Average Bad
#2 Bad <NA> Stop Good
#3 <NA> <NA> <NA> Good
df[]我们可以将lappy
与match
一起使用
df[] <- lapply(df, function(x) value[match(x, match)])
df
# V1 V2 V3 V4
#1 Good Stop Average Bad
#2 Bad <NA> Stop Good
#3 <NA> <NA> <NA> Good
df[]或使用plyr
:矩阵(映射值(未列出(df)、c(匹配)、c(值))、dim(df))
或使用plyr
:矩阵(映射值(未列出(df)、c(匹配)、c(值))、dim(df))
简单明了。为了添加nomatch,以防我想保留字符串。加上'df[]@Chrisftw我没听懂以保留字符串
??你是说一个空字符串而不是NA
?。你的目标是什么?你的答案是正确的。如果df
中的某些字符串与values
中的字符串不匹配,我想添加一个nomatch
参数来保留不匹配的字符串。@Chrisftw使用nomatch
并不简单。我想你需要像v1这样简单明了的东西。为了添加nomatch,以防我想保留字符串。加上'df[]@Chrisftw我没听懂以保留字符串
??你是说一个空字符串而不是NA
?。你的目标是什么?你的答案是正确的。如果df
中的某些字符串与values
中的字符串不匹配,我想添加一个nomatch
参数来保留不匹配的字符串。@Chrisftw使用nomatch
并不简单。我想你需要像v1这样的东西