【发布时间】:2015-03-07 16:59:07
【问题描述】:
假设我在两个时间点 (time) 测量了五个人 (id) 的某个值(value编码为 H、L 或 I)。 value 中有时可能会出现 NA:
require(stringr)
require(dplyr)
set.seed(8)
df1 <- data.frame(
time=rep(c(1,2), 5),
id=rep(c("a", "b", "c", "d", "e"),2),
value=sample(c("H","L","I", NA), replace=T, 10))
如何创建一个因子变量(最好使用dplyr::mutate()),以指示每个idvalue 从时间 1 到时间 2 的转换(例如:如果 H 在时间 1 和 L,则类似于“HL”在时间 2)。
df1 %>%
group_by(id) %>%
arrange(time)
给:
time id value
1 1 a L
2 2 a I
3 1 b L
4 2 b H
5 1 c NA
6 2 c NA
7 1 d NA
8 2 d I
9 1 e L
10 2 e I
我需要第四列来指示时间转换,例如(编造的):
time id value transition
1 1 a L L-I
2 2 a I L-I
3 1 b L L-H
4 2 b H L-H
5 1 c NA NA-NA
6 2 c NA NA-NA
7 1 d NA NA-I
8 2 d I NA-I
9 1 e L L-I
10 2 e I L-I
类似的东西(如果只有str_c() 命令可以做到的话):
df1 <-
df1 %>%
group_by(id) %>%
arrange(time) %>%
mutate(transition=str_c(value, sep="-"))
【问题讨论】:
标签: r variable-assignment dplyr