繁体   English   中英

如何用 X 列中的相应值替换数据框中的所有值?

[英]How to replace all values in a dataframe with their respective value in column X?

我有一个这样的数据框:

df <- data.frame(
  A = c(NA, 5, 5),
  B = c(5, NA, NA),
  C = c(5, 5, NA),
  X = c(0.5, 0.25, 0.8)
)

我将如何用 X 列中的相应值替换 5 的所有值? 理想情况下,如果可能,我想使用dplyr命令。

使用across -

library(dplyr)
df %>% mutate(across(A:C, ~ifelse(. == 5, X, .)))

#     A   B    C    X
#1   NA 0.5 0.50 0.50
#2 0.25  NA 0.25 0.25
#3 0.80  NA   NA 0.80

case_when的替代解决方案:

library(dplyr)

df %>%
  mutate(across(A:C, ~ case_when(. == 5 ~ X,
                                 TRUE ~ .)))

     A   B    C    X
1   NA 0.5 0.50 0.50
2 0.25  NA 0.25 0.25
3 0.80  NA   NA 0.80

一个基本的 R 解决方案:

df[] <- lapply(df, function(x) ifelse(x==5, df$X, x))
df
     A   B    C    X
1   NA 0.5 0.50 0.50
2 0.25  NA 0.25 0.25
3 0.80  NA   NA 0.80

使用replace

library(dplyr)
df %>%
     mutate(across(A:C, ~ replace(., .  %in% 5, X[. %in% 5])))
     A   B    C    X
1   NA 0.5 0.50 0.50
2 0.25  NA 0.25 0.25
3 0.80  NA   NA 0.80

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM