我的问题与此one非常相似,但就我而言,我希望这些值位于不同的列中,而不是串联在一起。
例如,使用以下玩具数据框
输入:
<div class="d-flex align-items-center small">
<i class="fa fa-search fa-fw text-muted position-absolute pl-3"></i>
<input type="text" class="form-control py-4" placeholder="Search..." style="padding-left: 38px;"/>
</div>
我想创建一种新的方法,其中所有测量值均按患者分组,即 输出:
Patient Value
1 'A'
1 'B'
1 'C'
1 'D'
2 'B'
2
2 'E'
and so on.....
请注意,仍然会考虑缺少值。如何在R中做到这一点?
答案 0 :(得分:3)
通过“患者”创建序列后,我们可以将数据spread
转换为“宽”格式
library(tidyverse)
df1 %>%
group_by(Patient) %>%
mutate(nm = str_c("Value", row_number())) %>%
spread(nm, Value, fill = "")
# A tibble: 2 x 5
# Groups: Patient [2]
# Patient Value1 Value2 Value3 Value4
# <int> <chr> <chr> <chr> <chr>
#1 1 A B C D
#2 2 B "" E ""
df1 <- structure(list(Patient = c(1L, 1L, 1L, 1L, 2L, 2L, 2L), Value = c("A",
"B", "C", "D", "B", NA, "E")), class = "data.frame", row.names = c(NA,
-7L))