簡體   English   中英

根據R中兩個變量的唯一值創建數據框

[英]create data frame based on unique values of two variables in R

我想基於另一個數據框的兩個唯一值創建一個新的數據框。

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 ,但不確定如何在此處合並該功能。

我們可以與tidyr一起completeunite

library(tidyr)
complete(DF, id, st.name) %>% 
              unite(new_id, id, st.name, sep = '')

或使用base R ,我們可以通過expand.gridmergepaste獲得預期的輸出

transform(merge(expand.grid(lapply(DF[1:2], unique)),
             DF, all.x=TRUE), id = paste0(id, st.name))[-2]

或帶有CJdata.table選項(在評論中由@Frank提及)

library(data.table)
setDT(DF)[CJ(id = id, st.name = st.name, unique=TRUE), on=.(id, st.name)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM