簡體   English   中英

R-如何根據ID將行值列表拆分為新的列值

[英]R-How to split list of row value into new column value against ID

我是R語言編程的新手,我需要實現低於期望的輸出,您能幫我嗎? 數據框:

ID      Name                      
 1      null                      
 2      list(A = 10, B = 20)      
 2      list(G = 4, U = 2)        
 3      null                      
 3      null                      
 4      list(A = 7, B = 10)

所需的輸出將是

ID      Measure                   Measure.A   Measure.B                 
 1      null                      null          null                   
 2      list(A = 10, B = 20)      10             20                    
 2      list(A = 4, B = 2)         4              2                     
 3      null                       null          null                  
 3      null                       null          null                  
 4      list(A = 7, B = 10)        7              10                   

最好在data.frame使用NA而不是NULL元素。 通過“名稱”列環(假設它是一個list與嵌套list的元素), replaceNULL (假設它是真實的NULL而不是字符串"null" )與NA和rbind使用元件do.call 分配輸出以在'df1'中創建兩個新列

df1[c("Measure.A", "Measure.B")] <- unlist(do.call(rbind, 
            lapply(df1$Name, function(x) replace(x, is.null(x), NA))))

names(df1)[2] <- "Measure"  

數據

df1 <- structure(list(ID = c(1, 2, 2, 3, 3, 4), Name = structure(list(
NULL, structure(list(A = 10, B = 20), .Names = c("A", "B"
)), structure(list(G = 4, U = 2), .Names = c("G", "U")), 
NULL, NULL, structure(list(A = 7, B = 10), .Names = c("A", 
"B"))), class = "AsIs")), .Names = c("ID", "Name"), row.names = c(NA, 
-6L), class = "data.frame")

暫無
暫無

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

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