分散多列

时间:2018-07-25 08:23:58

标签: r dataframe tidyverse

如果我有一个数据框,例如

    Inj Name Injection ID   Time
116   1    B         6130  3.007
117   1  CBZ         6130  7.397
118   1    A         6130  7.486
119   1    C         6130  7.761
120   1    D         6130 10.175
121   1    F         6130 10.511

structure(list(Inj = c(1, 1, 1, 1, 1, 1), Name = c("B", "CBZ", 
"A", "C", "D", "F"), `Injection ID` = c(6130, 6130, 6130, 6130, 
6130, 6130), Time = c(3.007, 7.397, 7.486, 7.761, 10.175, 10.511
)), .Names = c("Inj", "Name", "Injection ID", "Time"), class = "data.frame", row.names = 116:121)

我会(由于我有许多不同的Inj值,因此可以将此值变成单个行,例如

  Inj Injection.ID Name.1 Name.2 Name.3 Name.4 Name.5 Name.6 Time.1 Time.2 Time.3 Time.4 Time.5 Time.6
1   1         6130      B    CBZ      A      C      D      F  3.007  7.397  7.486  7.761 10.175 10.511

很遗憾,我真的不确定如何使用spread ...或其他任何方法来完成此操作。

2 个答案:

答案 0 :(得分:2)

library(dplyr)
df %>% group_by(`Injection ID`) %>% mutate(row = row_number()) %>% 
       gather(key, value, -row,  -Inj, -`Injection ID`) %>% 
       mutate(id= paste0(key,".",row)) %>% 
       select(-row, -key) %>% spread(id, value)

# A tibble: 1 x 14
# Groups:   Injection ID [1]
    Inj `Injection ID` Name.1 Name.2 Name.3 Name.4 Name.5 Name.6 Time.1 Time.2 Time.3 Time.4 Time.5 Time.6
    <dbl>          <dbl> <chr>  <chr>  <chr>  <chr>  <chr>  <chr>  <chr>  <chr>  <chr>  <chr>  <chr>  <chr> 
1     1           6130 B      CBZ    A      C      D      F      3.007  7.397  7.486  7.761  10.175 10.511

答案 1 :(得分:1)

使用 let ref = firebase.database().ref(userID); ref.orderByKey().equalTo(key).on("child_added", function(snapshot) { document.getElementById('chat_box').style.display = 'none'; console.log("This ad is posted by you - " + userID) ; }); / melt()可以做类似的事情(使用来自dcast()的管道(无论如何,magrittr都会加载)):

dplyr
相关问题