在R中更改基于另一个数据帧的单元格
在这种情况下,如果df1==1中的单元格新值是当前df2单元格,我想用另一个dataframe的值创建一个新列在R中更改基于另一个数据帧的单元格,r,dplyr,tidyr,data-manipulation,R,Dplyr,Tidyr,Data Manipulation,在这种情况下,如果df1==1中的单元格新值是当前df2单元格,我想用另一个dataframe的值创建一个新列 df1 <- c("1","2","3","4","5") df2 <- c("a","b","c","d","e") df <- cbind(df1,df2) df df1 df2 [1,] "1" "a" [2,] "2" "b" [3,] "3" "c" [4,] "4" "d" [5,] "5" "e" 事先非常感谢您可以使用ifelse: tr
df1 <- c("1","2","3","4","5")
df2 <- c("a","b","c","d","e")
df <- cbind(df1,df2)
df
df1 df2
[1,] "1" "a"
[2,] "2" "b"
[3,] "3" "c"
[4,] "4" "d"
[5,] "5" "e"
事先非常感谢您可以使用
ifelse
:
transform(df, my_col = ifelse(df1 == 1, df2, df1))
# df1 df2 my_col
#1 1 a a
#2 2 b 2
#3 3 c 3
#4 4 d 4
#5 5 e 5
library(dplyr)
df %>%mutate(my_col = ifelse(df1 == 1, df2, df1))
dplyr中的等效项:
transform(df, my_col = ifelse(df1 == 1, df2, df1))
# df1 df2 my_col
#1 1 a a
#2 2 b 2
#3 3 c 3
#4 4 d 4
#5 5 e 5
library(dplyr)
df %>%mutate(my_col = ifelse(df1 == 1, df2, df1))
或者先复制
df1
值,然后替换
df$my_col <- df$df1
df$my_col[df$df1 == 1] <- df$df2[df$df1 == 1]
df$my\u col您可以使用ifelse
:
transform(df, my_col = ifelse(df1 == 1, df2, df1))
# df1 df2 my_col
#1 1 a a
#2 2 b 2
#3 3 c 3
#4 4 d 4
#5 5 e 5
library(dplyr)
df %>%mutate(my_col = ifelse(df1 == 1, df2, df1))
dplyr中的等效项
:
transform(df, my_col = ifelse(df1 == 1, df2, df1))
# df1 df2 my_col
#1 1 a a
#2 2 b 2
#3 3 c 3
#4 4 d 4
#5 5 e 5
library(dplyr)
df %>%mutate(my_col = ifelse(df1 == 1, df2, df1))
或者先复制
df1
值,然后替换
df$my_col <- df$df1
df$my_col[df$df1 == 1] <- df$df2[df$df1 == 1]
df$my_col使用数据。表将就地分配
library(data.table)
setDT(df)[, my_col := df1][df1 == 1, my_col := df2]
df
# df1 df2 my_col
#1: 1 a a
#2: 2 b 2
#3: 3 c 3
#4: 4 d 4
#5: 5 e 5
或使用fifelse
setDT(df)[, my_col := fifelse(df1 == 1, df2, df1)]
或使用fcase
setDT(df)[, my_col := fcase(df1 == 1, df2, default = df1)]
数据
df使用数据。表将就地分配
library(data.table)
setDT(df)[, my_col := df1][df1 == 1, my_col := df2]
df
# df1 df2 my_col
#1: 1 a a
#2: 2 b 2
#3: 3 c 3
#4: 4 d 4
#5: 5 e 5
或使用fifelse
setDT(df)[, my_col := fifelse(df1 == 1, df2, df1)]
或使用fcase
setDT(df)[, my_col := fcase(df1 == 1, df2, default = df1)]
数据
df