使用R将字符串粘贴到不同的列中

时间:2019-04-17 16:57:43

标签: r

我的问题与此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中做到这一点?

1 个答案:

答案 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))