【问题标题】:Transform a dataframe with comma separated values in column in r [duplicate]在 r [重复] 的列中转换具有逗号分隔值的数据框
【发布时间】:2021-12-30 13:32:20
【问题描述】:

我有一个数据框,例如

COL1          COL2 
Canis_lupus   1_Group367,4_Group89,70_Group900
Danio_rerio   8_Group78
Felis_cattus  6_Group9,90_Group97

我想把它改成:

COL1          Groups   Value
Canis_lupus   Group367 1
Canis_lupus   Group89  4
Canis_lupus   Group900 70
Danio_rerio   Group78  8
Felis_cattus  Group9   6
Felis_cattus  Group97  90 

我将 COL2 中的信息分成两个新列 GroupsValue,其中组是 GroupX 元素,值是第一个 _ 之前的数字

如果有帮助,这里是 dput 格式:

structure(list(COL1 = c("Canis_lupus", "Danio_rerio", "Felis_cattus"
), COL2 = c("1_Group367,4_Group89,70_Group900", "8_Group78", 
"6_Group9,90_Group97")), class = "data.frame", row.names = c(NA, 
-3L))

【问题讨论】:

标签: r dplyr


【解决方案1】:

一个可能的解决方案:

library(tidyverse)

df <- structure(list(COL1 = c("Canis_lupus", "Danio_rerio", "Felis_cattus"
), COL2 = c("1_Group367,4_Group89,70_Group900", "8_Group78", 
            "6_Group9,90_Group97")), class = "data.frame", row.names = c(NA, 
                                                                         -3L))
df %>% 
  separate_rows(COL2, sep=",") %>% 
  separate(COL2, into=c("Value", "COL2"),sep = "_", convert = TRUE)

#> # A tibble: 6 × 3
#>   COL1         Value COL2    
#>   <chr>        <int> <chr>   
#> 1 Canis_lupus      1 Group367
#> 2 Canis_lupus      4 Group89 
#> 3 Canis_lupus     70 Group900
#> 4 Danio_rerio      8 Group78 
#> 5 Felis_cattus     6 Group9  
#> 6 Felis_cattus    90 Group97

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-28
    • 2018-06-20
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2011-11-11
    相关资源
    最近更新 更多