- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能是关于 tidyr
的一个非常基本的问题,我刚刚开始学习它,但在 SO 和 Google 中进行了大量搜索后似乎没有找到答案。
假设我有一个数据框:
mydf<- data.frame(name=c("Joe","Mary","Bob"),
jan=1:3,
feb=4:6,
mar=7:9,
apr=10:12)
我想把它从宽改成长。之前,我使用了melt
,所以:
library(reshape)
melt(mydf,id.vars = "name",measure.vars = colnames(mydf)[-1])
产生
name variable value
1 Joe jan 1
2 Mary jan 2
3 Bob jan 3
4 Joe feb 4
5 Mary feb 5
6 Bob feb 6
7 Joe mar 7
8 Mary mar 8
9 Bob mar 9
10 Joe apr 10
11 Mary apr 11
12 Bob apr 12
我想使用 tidyr::gather
,所以我尝试了
gather(mydf,month,sales,jan:apr)
产生
name month sales
1 2 jan 1
2 3 jan 2
3 1 jan 3
4 2 feb 4
5 3 feb 5
6 1 feb 6
7 2 mar 7
8 3 mar 8
9 1 mar 9
10 2 apr 10
11 3 apr 11
12 1 apr 12
我在这里迷路了,因为我无法将名称保留在第一列中。
我在这里错过了什么?
######### 编辑以添加#######
> R.Version()$version.string
[1] "R version 3.2.2 (2015-08-14)"
> packageVersion("tidyr")
[1] ‘0.3.0’
最佳答案
在 tidyr 0.3.0 中,您似乎需要将因子列 name
转换为字符。我不确定为什么它从 0.2.0 版本开始发生了变化,它在没有转换为字符的情况下工作。尽管如此,我们开始......
gather(transform(mydf, name = as.character(name)), month, sales, jan:apr)
# name month sales
# 1 Joe jan 1
# 2 Mary jan 2
# 3 Bob jan 3
# 4 Joe feb 4
# 5 Mary feb 5
# 6 Bob feb 6
# 7 Joe mar 7
# 8 Mary mar 8
# 9 Bob mar 9
# 10 Joe apr 10
# 11 Mary apr 11
# 12 Bob apr 12
R.version.string
# [1] "R version 3.2.2 (2015-08-14)"
packageVersion("tidyr")
# [1] ‘0.3.0’
感谢@aosmith 找到已关闭的 github 问题。您现在应该可以毫无问题地使用开发版本。要安装开发版本,请使用
devtools::install_github(
"hadley/tidyr",
ref = "2e08772d154babcc97912bcae8b0b64b65b964ab"
)
关于r - 如何使用 tidyr::gather 将字符串保留在第一列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490653/
我正在为网络元分析准备数据,但在输入列时遇到困难。 如果我有这个初始数据集: Study Trt y sd n 1 1 -1.22 3.70 54 1
这个问题在这里已经有了答案: How do I get a contingency table? (6 个回答) Faster ways to calculate frequencies and ca
我有一个看起来像这样的数据集 site % unite(D01, D01_1, D01_2, sep = "/", remove = TRUE) %>% unite(D02, D02_1, D
我有以下数据: > data data unique grouping value 1 1 a 15 2 2
我注意到了 tidyr(0.4.0)使用 spread 时对值列进行排序,如 tidyr(0.3.1)按照它们在 gather 之前的顺序返回值列. 可重现的示例 1: library(dplyr)
我正在学习 dplyr,来自 plyr,我想从 xtabs 的输出生成(每组)列(每交互)。 简短摘要:我得到 A B 1 NA NA 2 当我想要 A B 1 2 xta
我有一个 data.frame,其中一些单元格包含逗号分隔值的字符串: d % separate_rows(b) %>% separate_rows(c) # a b c # 1
Tidy eval now supports glue strings 所以这很好用: my_summarise5 % mutate( "mean_{{mean_var}}" :=
我有看起来像这样的数据 df = data.frame(name=c("A","A","B","B"), group=c("g1","g2","g1","g2"),
我有一个面板结构的数据框:两年内每个单元的 2 个观察值: library(tidyr) mydf % spread(year, value) %>% filter(2012 > 0.5) 以下工作但
我正在尝试使用 tidyr 包中的 extract 将包含单个字符串的列拆分为 3 个单独的列。该问题的最小工作示例如下: # A tibble: 3 x 1 question_codes
我在 R 中有以下数据框 my_df_test my_df_test V1 V2 V3 V4 V5 V6_S1 V6_S2 V7_S1 V7_S2 1 1 A S1
我有一个看起来像这样的数据框。我将其命名为“df_raw”。 "HRHHID\t15\tHOUSEHOLD IDENTIFIER\t(Part 1)\t1- 15" "HRMONTH\t2\tMONT
我搜了又搜,找到了类似的东西,但没有什么是对的。希望这个问题没有得到解答。 假设我有一个包含 Y、N 的列,有时还有额外的信息 df%separate('Surgery',c("Surgery
我想使用 tidyr 将数据分布在多个列上。 dat % gather(variable, value, -(ID:col1)) %>% unite(temp, col1, variab
tidyr 的扩展函数仅接受不带引号的列名。有没有办法可以传递包含列名的变量例如 # example using gather() library("tidyr") dummy.data % gath
我的问题类似于 this question .我正在尝试 tidyr::gather多列。但是,链接中提供的解决方案并不理想,因为所有列中的属性通常不相同,因此它们被删除。 请注意,我知道如何使用基础
我在 R 中有以下数据框 my_df_test my_df_test V1 V2 V3 V4 V5 V6_S1 V6_S2 V7_S1 V7_S2 1 1 A S1
我有一个看起来像这样的数据框。我将其命名为“df_raw”。 "HRHHID\t15\tHOUSEHOLD IDENTIFIER\t(Part 1)\t1- 15" "HRMONTH\t2\tMONT
这个问题在这里已经有了答案: Reshaping data.frame from wide to long format (8 个答案) 关闭 2 年前。 我正在尝试学习如何使用 tidyr 将宽数
我是一名优秀的程序员,十分优秀!