【发布时间】:2021-05-11 15:25:02
【问题描述】:
我在 R 中有以下列表 df:
structure(list(disease = structure(c(1L, 1L), .Label = "Barcelona", class = "factor"),
`<18` = structure(list(0.193103448275862,
0.0445344129554656), .Names = c(NA_character_, NA_character_
)), `19-25` = structure(list(0.0413793103448276,
0.345748987854251), .Names = c(NA_character_, NA_character_
)), `26-64` = structure(list(0.448275862068966, 0.167611336032389), .Names = c(NA_character_,
NA_character_)), `46-64` = structure(list(0.0344827586206897,
0.00647773279352227), .Names = c(NA_character_, NA_character_
)), `>65` = structure(list(0.282758620689655,
0.435627530364373), .Names = c(NA_character_, NA_character_
)), type = structure(1:2, .Label = c("Clinical Trial", "Real-World"
), class = "factor")), class = "data.frame", row.names = c(NA,
-2L))
我想重新排列数据框,以便我可以使用melt 按城市、单位和年龄组获取每个值。但是,我得到一个额外的列作为输出:
melt(df)
city type variable value NA
1 Barcelona flat <18 0.19310345 0.044534413
2 Barcelona house <18 0.19310345 0.044534413
3 Barcelona flat 19 - 25 0.04137931 0.345748988
4 Barcelona house 19 - 25 0.04137931 0.345748988
5 Barcelona flat 26 - 45 0.44827586 0.167611336
6 Barcelona house 26 - 45 0.44827586 0.167611336
7 Barcelona flat 46 - 64 0.03448276 0.006477733
8 Barcelona house 46 - 64 0.03448276 0.006477733
9 Barcelona flat > 65 0.28275862 0.435627530
10 Barcelona house > 65 0.28275862 0.435627530
有什么方法可以不使用NA 列并在value 列中获取唯一值?
【问题讨论】:
-
能否请您重现您的问题?当我读入您在问题中提供的数据并在其上运行
reshape2::melt()时,我得到了没有NA列的预期输出。 (请使用dput()共享数据,以便复制/粘贴,读取数据时必须清理换行符很烦人。) -
啊,很高兴你使用了
dput()。问题是您的列是lists,而不是numeric。
标签: r reshape reshape2 melt data-wrangling