R在列中观察到csv

时间:2019-05-25 15:19:13

标签: r variables read.csv

到目前为止,在每个示例中,我都看到

用于读取R中的csv文件,变量位于列中,观察值(个人)位于行中。在入门统计学课程中,我正在学习一个示例表,其中(许多)变量位于行中,而(很少)观察值位于列中。有没有办法读取这样的表,以便您以通常的“方向”获得数据框?

1 个答案:

答案 0 :(得分:0)

这里是使用tidyverse的解决方案。首先,我们将数据收集为窄格式的整洁数据,然后将其扩展回宽格式,通过将其从gather()中排除,将第一列设置为收集的观测值的键。

我们将使用来自U.S. Census Bureau的状态级别摘要数据来演示该技术。

我为四个州创建了一个人口数据表,其中状态(观察)在列中,变量在表的行中列出。

enter image description here

为使示例可复制,我们将数据输入Excel并将其保存为逗号分隔的值文件,将其分配给R中的向量并用read.csv()读取。

textFile <- "Variable,Georgia,California,Alaska,Alabama
population2018Estimate,10519475,39557045,737438,4887871
population2010EstimatedBase,9688709,37254523,710249,4780138
pctChange2010to2018,8.6,6.2,3.8,2.3
population2010Census,8676653,37253956,710231,4779736"

# load tidyverse libraries 
library(tidyr)
library(dplyr)
# first gather to narrow format then spread back to wide format
data %>% 
     gather(.,state,value,-Variable) %>% spread(Variable,value)

...以及结果:

       state pctChange2010to2018 population2010Census
1    Alabama                 2.3              4779736
2     Alaska                 3.8               710231
3 California                 6.2             37253956
4    Georgia                 8.6              8676653
  population2010EstimatedBase population2018Estimate
1                     4780138                4887871
2                      710249                 737438
3                    37254523               39557045
4                     9688709               10519475