我看到过类似的题目,但似乎都没有我想要的东西。如果这是一个重复的问题,请原谅。
从我的tidyverse函数中,我已经能够产生以下结果。
locationAndYear var1 var2 var3 var4 var5 var6
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 City 2015 0.425 0.412 0.854 0.844 0.853 0.368
2 City 2016 0.270 0.259 0.842 0.834 0.856 0.456
3 City 2018 0.468 0.454 0.816 0.833 0.848 0.430
4 City 2019 0.336 0.604 0.842 0.852 0.887 0.525
我只是想把这个表格转置成这样 这样我就可以在RMarkdown文档中显示出来了。(也许在 stargazer 中有更好的方法可以做到这一点)
variable City 2015 City 2016 City 2018 City 2019
var1 0.425 0.270 0.468 0.336
var2 0.412 0.259 0.454 0.604
var3 0.854 0.842 0.816 0.842
var4 0.844 0.834 0.833 0.852
var5 0.853 0.856 0.848 0.887
var6 0.368 0.456 0.430 0.525
这基本上是为了一份报告--所以最终想用一个漂亮的表格格式来做,就像stargazer一样。
提前感谢任何建议!我看到过类似的主题,但似乎都没有我想要的东西。
获取长格式的数据,然后宽 。
library(tidyr)
df %>%
pivot_longer(cols = -locationAndYear, names_to = 'variable') %>%
pivot_wider(names_from = locationAndYear, values_from = value)
# variable City_2015 City_2016 City_2018 City_2019
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 var1 0.425 0.27 0.468 0.336
#2 var2 0.412 0.259 0.454 0.604
#3 var3 0.854 0.842 0.816 0.842
#4 var4 0.844 0.834 0.833 0.852
#5 var5 0.853 0.856 0.848 0.887
#6 var6 0.368 0.456 0.43 0.525
使用 data.table
:
library(data.table)
dcast(melt(setDT(df), id.vars = 'locationAndYear'),
variable~locationAndYear, value.var = 'value')
数据
df <- structure(list(locationAndYear = c("City_2015", "City_2016",
"City_2018", "City_2019"), var1 = c(0.425, 0.27, 0.468, 0.336
), var2 = c(0.412, 0.259, 0.454, 0.604), var3 = c(0.854, 0.842,
0.816, 0.842), var4 = c(0.844, 0.834, 0.833, 0.852), var5 = c(0.853,
0.856, 0.848, 0.887), var6 = c(0.368, 0.456, 0.43, 0.525)),
class = "data.frame", row.names = c(NA, -4L))