![](/img/trans.png)
[英]Multiply all values in a column from respective value in a row in different dataframe
[英]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.