R:通过合并两个变量的内容来创建一个新变量
R: creating a new variable by merging the contents of two variables in
我有一个数据框 a,其中包含两个代表两种类型的人的变量。现在设置 df 的方式是,对于一个变量,当值不代表人 A 时存在 NA,而在第二个变量中存在值不代表人 b 的 NA。我想合并这两个变量,这样我就只有 1 个变量。
DF 看起来像这样:
Total <- rep(c(1, NA, NA, 5) , 1)
Total2 <-rep( c(NA, 8,9,NA), 1)
data <- data.frame(Total, Total2)
我想添加第三个变量,如下所示:
Total <- rep(c(1, NA, NA, 5) , 1)
Total2 <-rep( c(NA, 8,9,NA), 1)
All_var = rep(c(1,8,9,5), 1)
data <- data.frame(Total, Total2, All_var)
我试过了,但我得到了一个与 Total 具有相同值的新变量。
data$All_var=data$Total
data$All_var[is.na(data$Total)]=data$Total2[is.na(data$Total)]
谢谢。
在基础 R 中尝试:
data$newvar <- replace(data$Total, is.na(data$Total), data$Total2[is.na(data$Total)])
或使用 coalesce
和 dplyr
:
library(dplyr)
data %>%
mutate(newvar = coalesce(Total, Total2))
我有一个数据框 a,其中包含两个代表两种类型的人的变量。现在设置 df 的方式是,对于一个变量,当值不代表人 A 时存在 NA,而在第二个变量中存在值不代表人 b 的 NA。我想合并这两个变量,这样我就只有 1 个变量。
DF 看起来像这样:
Total <- rep(c(1, NA, NA, 5) , 1)
Total2 <-rep( c(NA, 8,9,NA), 1)
data <- data.frame(Total, Total2)
我想添加第三个变量,如下所示:
Total <- rep(c(1, NA, NA, 5) , 1)
Total2 <-rep( c(NA, 8,9,NA), 1)
All_var = rep(c(1,8,9,5), 1)
data <- data.frame(Total, Total2, All_var)
我试过了,但我得到了一个与 Total 具有相同值的新变量。
data$All_var=data$Total
data$All_var[is.na(data$Total)]=data$Total2[is.na(data$Total)]
谢谢。
在基础 R 中尝试:
data$newvar <- replace(data$Total, is.na(data$Total), data$Total2[is.na(data$Total)])
或使用 coalesce
和 dplyr
:
library(dplyr)
data %>%
mutate(newvar = coalesce(Total, Total2))