程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值??

开发过程中遇到如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?的解决方法建议,希望对你解决如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?有所启发或帮助;

我正在使用 R 中的单个数据框,其中包含以下字符列和值。

C1<-c("1","2","3","4","5")
C2<-c("x","t","u","r","j")
C3<-c("2","5","1","4")
C4<-c("3","NA","5")
df<-data.frame(C1,C2,C3,C4)

我正在尝试编写代码来替换 C3 和 C4 中的值,如下所示:

  1. 对于 C3 中的每个值,在 C1 中找到相同的值。
  2. 将 C3 中的值替换为 C3/C1 匹配行中出现的 C2 中的值。在 C3 中,对于 例如,“2”(第一个值)将被替换为“t”,“5”将被替换为“j”,“3”将被替换 替换为“3”等。
  3. 对 C4 中的值重复相同的过程。
  4. 跳过 C3 或 C4 中带有 NA 的任何单元格。

初始数据框如下所示:

如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?

最终的数据框应如下所示:

如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?

我还没有想出可以完成这项任务的代码(基础 R 或 dplyr)。如果有人可以提供帮助,我将不胜感激。

谢谢!

这是一个新的 df,我尝试使用受访者提供的代码进行操作(例如,df[c("C3","C4")]

我要返回 C3 C4 的所有 NA,但不明白为什么。 C3和C1之间存在匹配。

如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?

解决方法

我们可以使用@H_972_5@match

df[c("C3","C4")] <- lapply(df[c("C3","C4")],function(X) df$C2[R_756_11845@atch(x,df$C1)])
,

我也使用了 @H_972_5@match,但将其拆分为两个不同的语句以更清楚地说明发生了什么:

# Create sample data
C1<-c("1","2","3","4","5")
C2<-c("x","t","u","r","j")
C3<-c("2","5","1","4")
C4<-c("3","NA","5")
df<-data.frame(C1,C2,C3,C4)

# Make replacements
df$C3_mod <- ifelse(is.na(df$C3),df$C3,df$C2[R_756_11845@atch(df$C3,df$C1)])
df$C4_mod <- ifelse(is.na(df$C4),df$C4,df$C2[R_756_11845@atch(df$C4,df$C1)])

# View results
df
#   C1 C2 C3 C4 C3_mod C4_mod
# 1  1  x  2  3      t      u
# 2  2  t  5  1      j      x
# 3  3  u  3 NA      u   <NA>
# 4  4  r  1  2      x      t
# 5  5  j  4  5      r      j
,

将 @H_972_5@match 与矩阵一起使用。

cols <- c('C3','C4')
df[cols] <- df$C2[R_756_11845@atch(as.matrix(df[cols]),df$C1)]
df

#  C1 C2 C3   C4
#1  1  x  t    u
#2  2  t  j    x
#3  3  u  u <NA>
#4  4  r  x    t
#5  5  j  r    j
,

我解决了 NA 值的问题。事实证明,我没有虑的列值中有空格。再次感谢大家的回答。我在这个过程中学到了很多东西。

@H_197_83@

大佬总结

以上是大佬教程为你收集整理的如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?全部内容,希望文章能够帮你解决如何根据使用 R 与第三列的匹配,用第二列的值替换数据框中多列的值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: