使用另一个数据表中的值更新数据表列
Update datatable columns with values from another datatable
考虑以下两个 data.tables:
df1=data.table(a=1:3, b=4:6, c=7:9)
df2=data.table(a=c(T,F,T), c=c(F,F,T), d=c(T,F,F))
用 df2
中的相应值更新 df1
的 a
和 c
列的最佳方法是什么?
df1[,c("a","c"),with=FALSE]
和df2[,c("a","c"),with=FALSE]
return各自对应的部分data.table;
但是 df1[,c("a","c"),with=FALSE] <- df2[,c("a","c"),with=FALSE]
return 是一个错误!
这是另一个解决方案:
library(tidyverse)
df1 <- tibble(a = 1:3, b = 4:6, c = 7:9)
df2 <- tibble(a = c(T,F,T), c = c(F,F,T), d = c(T,F,F))
bind_cols(df1, df2) %>%
transmute(a = a1, b, c = c1)
这会创建一个包含所有六列的 table,然后 transmute
调用会选择并重命名您感兴趣的列。
考虑以下两个 data.tables:
df1=data.table(a=1:3, b=4:6, c=7:9)
df2=data.table(a=c(T,F,T), c=c(F,F,T), d=c(T,F,F))
用 df2
中的相应值更新 df1
的 a
和 c
列的最佳方法是什么?
df1[,c("a","c"),with=FALSE]
和df2[,c("a","c"),with=FALSE]
return各自对应的部分data.table;
但是 df1[,c("a","c"),with=FALSE] <- df2[,c("a","c"),with=FALSE]
return 是一个错误!
这是另一个解决方案:
library(tidyverse)
df1 <- tibble(a = 1:3, b = 4:6, c = 7:9)
df2 <- tibble(a = c(T,F,T), c = c(F,F,T), d = c(T,F,F))
bind_cols(df1, df2) %>%
transmute(a = a1, b, c = c1)
这会创建一个包含所有六列的 table,然后 transmute
调用会选择并重命名您感兴趣的列。