【发布时间】:2019-04-24 21:48:11
【问题描述】:
我有一个数据集,其中有多行都对应于基线度量。我想按记录 id 折叠这些行,以便每个人只有一行用于基线测量。这意味着我必须折叠所有变量,其中一些是字符变量。我该怎么做呢?这是我尝试过的:
df.test %>% group_by(id) %>% filter(time == 0) %>%
summarise_all(., collapse=", ")
我正在使用的示例数据框如下所示:
data.frame(id = rep(99, 5), time = c(rep(0, 3), 3, 6), v1 = c("blk", NA, NA, 2, 3), v2 = c(NA, 1, NA, 4, 5), v3 = c(NA, NA, 1, 6, 7))
我需要它看起来像这样:
data.frame(id = rep(99, 3), time = c(rep(0, 1), 3, 6), v1 = c("blk", 2, 3), v2 = c(1, 4, 5), v3 = c(1, 6, 7))
我不知道 summarise 是否适合在这里使用。基本上我遇到的一个问题是字符的总和,我认为这就是为什么汇总不起作用。理想情况下,我真正想要做的就是将时间 = 0 的所有行中的信息按 id 组合起来,这样每个唯一 id 都有一行时间 = 0。
(对不起,我不确定如何让 data.frame 命令打印数据框?)
请帮忙!
编辑:示例 2
data.frame(id = c(rep(99,5), 100, 101, 101), time = c(rep(0, 3), 3, 6, 0, 0, 0), character = c(NA, NA, "blk", rep(NA, 5)), binary = c(1, rep(NA, 5), 0, NA), continuous = c(NA, NA, 2.29, rep(NA, 5)))
这与我的数据看起来很接近。我可以说的不起作用如下:
1)字符变量丢失 2)二进制变量中的 0 丢失(即使使用 != is.na(.) 而不是 != 0 2a)这是原子的,我将其更改为因子,现在它似乎可以工作 3) 连续变量 2.29 丢失 4) 有趣的是这里没有显示的是整数值,不是 0 的值似乎被保留,但整数都消失了——这是因为如果结构是原子的,整数就无法读取?
结论:我认为我需要从 atomic 更改所有值(它们是从 SPSS 以这种方式带入 r 的)?在此期间我会试试这个。
edit2:问题不在于数字与原子。我把所有东西都变成了数字,但整数仍然没有显示出来。
【问题讨论】:
-
如果您提供数据样本和所需的输出会有所帮助。目前尚不清楚您从哪个包中获取
collapse,以及您在此处拥有哪些不同的列类型 -
@CalumYou 好主意。我用示例数据编辑了我的问题。就我使用的折叠功能而言,我相信它是 dplyr 中的折叠功能。
标签: r dplyr tidyverse tidyr longitudinal