[英]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
的元素), replace
的NULL
(假設它是真實的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.