根据R中两个变量的唯一值创建数据框

时间:2016-11-06 01:46:30

标签: r data.table dplyr uniqueidentifier reshape2

我想基于另一个数据框中的两个唯一值创建一个新的数据框。

id <- c("A", "B", "B", "C")
st.name <- c("TX", "TX", "CA", "CA") 
type <- c(21, 26, 29, 24)
DF <- data.frame(id, st.name, type)
print(DF)

id st.name type  
A      TX   21  
B      TX   26  
B      CA   29  
C      CA   24  

我想基于id和st.type的唯一值创建一个新的数据框。结果如下:

new_id <- c("ATX", "ACA", "BTX", "BCA", "CTX", "CCA")
new_type <- c(21, NA, 26, 29, NA, 24)
DF2 <- data.frame(new_id, new_type)
print(DF2)

new_id new_type  
ATX       21  
ACA       NA  
BTX       26  
BCA       29  
CTX       NA  
CCA       24  

我在以前的项目中使用了dcast,但我不确定如何在此处合并该函数。

1 个答案:

答案 0 :(得分:4)

我们可以使用action_b

中的completeunite执行此操作
tidyr

或者使用library(tidyr) complete(DF, id, st.name) %>% unite(new_id, id, st.name, sep = '') ,我们可以使用base Rexpand.gridmerge

获得预期的输出
paste

transform(merge(expand.grid(lapply(DF[1:2], unique)), DF, all.x=TRUE), id = paste0(id, st.name))[-2] 选项data.table(@Frank在评论中提及)

CJ