将 tibble 转换为带有列标题的数据框
Posted
技术标签:
【中文标题】将 tibble 转换为带有列标题的数据框【英文标题】:Transform tibble to data frame with column headers 【发布时间】:2018-11-26 22:55:21 【问题描述】:我从 Excel 表中导入数据,如下所示:
F4_Off <- readxl::read_xlsx("myExcel.xlsx", sheet = "Offline", col_names = TRUE, range = "I1:L285")
F4_Off
F4_On <- readxl::read_xlsx("myExcel.xlsx", sheet = "Online", col_names = TRUE, range = "J1:M68")
F4_On
结合使用:
F4_Gesamt <- rbind(F4_Off, F4_On)
数据看起来像这样:
A tibble: 351 x 4
nein Smartphone `Computer / Laptop / Tablet` `keine Angabe`
<dbl> <dbl> <dbl> <dbl>
1 NA NA 1. NA
2 NA 1. NA NA
3 NA 1. NA NA
4 NA 1. NA NA
5 NA 1. 1. NA
6 NA 1. 1. NA
7 NA 1. 1. NA
8 NA 1. NA NA
9 NA NA 1. NA
10 1. NA NA NA
实际上我希望对每个列进行总结(总结,计算“1”)并转换成这样的表格:
Type Value
<chr> <dbl>
1 nein 162
2 Smartphone 120
3 `Computer / Laptop / Tablet` 93
4 `keine Angabe` 16
我可以通过这样做来实现总结:
F4_Gesamt_sum <- colSums(F4_Gesamt, na.rm = TRUE, dims = 1)
然后它看起来像这样:
nein Smartphone Computer / Laptop / Tablet keine Angabe
162 120 93 16
现在:
str(F4_Gesamt_sum)
给出:
Named num [1:4] 162 120 93 16
- attr(*, "names")= chr [1:4] "nein" "Smartphone" "Computer / Laptop / Tablet" "keine Angabe"
这就是我这几天惨遭失败的地方,我如何让它看起来像是我在上面“伪造”的?
最后我想将这些数据提供给 ggplot 并制作一个漂亮的条形图。
【问题讨论】:
F4_Gesamt %>% gather(Type, Value) %>% group_by(Type) %>% summarise(Value = sum(Value, na.rm = TRUE))
也许?
@markus 谢谢,这行得通
@markus,对不起,如果我做错了,我是 *** 的新手,我将如何向 F4_Off 添加一列“age”(我知道 cbind ...)然后得到结果具有 3 列“年龄”、“类型”和“值”的集合,其中的计数按“年龄”和“类型”分组?(请让我知道这是否应该是它自己的问题,然后我将创建一个新的)
您可以通过多种方式添加列。使用来自dplyr
的F4_Off$age <- ...
、mutate
或来自tibble
包的add_column
(如果您更喜欢tidyverse
解决方案)。我想这取决于age
的来源。你最好用一个最小的、可重复的例子来问一个新问题。 ps 使用dput()
分享您的数据。问候
@markus,谢谢
【参考方案1】:
试试
as.data.frame(F4_Gesamt_sum)
或
(function(x)data.frame(Type=names(x), Value=x))(F4_gesamt_sum)
【讨论】:
as.data.frame(F4_Gesamt_sum) 也可以,另一个以某种方式复制了“类型”谢谢! 对,“类型”列显示为行名以及第二个版本中的第一个变量以上是关于将 tibble 转换为带有列标题的数据框的主要内容,如果未能解决你的问题,请参考以下文章