轉換某些JSON數據後,我有一個數據框列表。幾個dataframes包括具有相同名稱的列:包含具有相同名稱的列的數據框列表
str(json)
List of 2
$ :'data.frame': 1 obs. of 2 variables:
..$ a :Factor
.. ..- attr(*, "names")= chr "a"
..$ b :Factor
.. ..- attr(*, "names")= chr "b"
$ :'data.frame': 1 obs. of 3 variables:
..$ a :Factor
.. ..- attr(*, "names")= chr "a"
..$ b :Factor
.. ..- attr(*, "names")= chr "b"
..$ b
.. ..- attr(*, "names")= chr "b"
其值:
json[[1]] json[[2]]
a b a b b
car boat bus plane train
我曾嘗試使用整個列表轉換成一個獨特的數據幀:
data <- rbind.fill(json)
但是,只有第一列共享名稱被認爲是:
data
a b
1 car boat
2 bus plane
我想獲得數據幀是這樣的:
data
a b
1 car boat
2 bus plane,train
我怎麼能合併這樣的列?
由於R不允許我創建兩個具有相同名稱的列(如Shorpy的答案中所示),我的實際列表包含數百個列,所以我無法在實踐中再現最小示例。不過,我覺得dput輸出可以減少到這樣的事情:
dput(json)
list(structure(list(`a` = structure(1L, .Names = "a", .Label = "car", class = "factor"),
`b` = structure(1L, .Names = "b", .Label = "boat", class = "factor") , .Names = c("a","b"), row.names = c(NA, -1L), class = "data.frame"),
structure(list(`a` = structure(1L, .Names = "a", .Label = "bus", class = "factor"),
`b` = structure(1L, .Names = "b", .Label = "plane", class = "factor"),
`b` = structure(1L, .Names = "b", .Label = "train", class = "factor"), .Names = c("a","b","b"), row.names = c(NA, -1L), class = "data.frame"))
我曾嘗試在此的其他問題解釋改變他們的名字來區分列:change column names with same name in dataframe in R。但是,在同一個數據框中可能會重複使用多個名稱,並且在不同的數據框中重複的名稱不一樣,這使得它更加複雜。
你能粘貼到你的問題'dput(JSON)'的輸出。這將保留您數據的確切結構,並使我們可以輕鬆將其粘貼到我們的R會話中。 – eipi10
@ eipi10我剛剛修改了我的問題。 –