我有一些long格式的資料,我需要將其轉換為wide格式。我剛剛實作了這個目標,但現在我正在努力解決如何將該檔案匯出為 CSV。
檢查后,我的寬資料似乎是一個包含串列的資料框。部分資料復制如下:
輸入()
dput(my_list)
structure(list(
id = c(428593707L, 430722191L, 430848712L, 431317885L, 432493351L, 435125247L),
`A1-ROL_SDRA_1_NA_score` = list(NULL, NULL, NULL, NULL, "2.1", NULL),
`A1-RW_SDRA_1_NA_score` = list(NULL, NULL, NULL, NULL, "2.1", NULL),
`A1-RW_SENS_1_NA_score` = list(NULL, NULL, "2.2", NULL, NULL, NULL),
`A2-MW_SBIO_1_NA_score` = list(NULL, NULL, NULL, NULL, NULL, NULL),
`A2-MW_SWS_1_NA_score` = list(NULL, "1.2", NULL, NULL, NULL, NULL),
`C1-AT_SADV_1_NA_score` = list(NULL, NULL, NULL, NULL, NULL, NULL),
`C1-AT_SBUS_2_NA_score` = list("3.1", NULL, NULL, NULL, NULL, NULL),
`C1-AT_SENS_1_NA_score` = list(NULL, NULL, "2.1", NULL, NULL, NULL),
`C1-AT_SENS_2_NA_score` = list(NULL, NULL, NULL, NULL, NULL, NULL),
row.names = c(NA, 6L), class = "data.frame")
現有答案
我嘗試了以下解決方案:
解決方案 1
t <- as.data.frame(my_list)
write.csv(t, "wide_data.csv", row.names = F)
我收到以下錯誤訊息 Error in utils::write.table(t, "wide_data.csv", row.names = F, : unimplemented type 'list' in 'EncodeElement'
解決方案 2
我還嘗試根據此鏈接將其保存為串列https://www.rdocumentation.org/packages/erer/versions/3.0/topics/write.list
library('erer')
write.list(my_list, file = "wide_data.csv")
但是我收到了這個錯誤Error in write.list(my_list, file = "wide_data.csv") : Need an 'list' object.,這是可以理解的,因為 my_list 資料是串列的資料框。
解決方案 3
我也嘗試了tibble()解決方案:
t <- my_list %>% as_tibble()
write.csv(t, "wide_data.csv", row.names = F)
再次,我得到了錯誤 Error in utils::write.table(t, "wide_data.csv", row.names = F, : unimplemented type 'list' in 'EncodeElement'
解決方案 4
我也嘗試過列系結。
t = as.data.frame(do.call(cbind, my_list))
write.csv(t, "wide_data.csv", row.names = F)
再次,我得到了錯誤 Error in utils::write.table(t, "wide_data.csv", row.names = F, : unimplemented type 'list' in 'EncodeElement'
解決方案 5
我已經通過以下方式嘗試了行系結:
t = my_list %>% bind_rows()
write.csv(t, "wide_data.csv", row.names = F)
再次,我得到了錯誤 Error in utils::write.table(t, "wide_data.csv", row.names = F, : unimplemented type 'list' in 'EncodeElement'
誰能建議我如何將這個串列資料框匯出為 CSV?過去幾天我一直在為這個問題苦苦掙扎,任何幫助將不勝感激。
uj5u.com熱心網友回復:
以下解決方案似乎有效。謝謝,@伊恩坎貝爾
# Row bind
df = do.call(rbind, my_list)
# Take transpose
df2 = t(df)
write.csv(df2, "test.csv", row.names = F)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407420.html
標籤:
