r - 基于str_detect对列进行分类

标签 r

我目前正在使用一个如下所示的数据框:

Example <- structure(list(ID = c(12301L, 12301L, 15271L, 11888L, 15271L, 
                                         15271L, 15271L), StationOwner = c("Brian", "Brian", "Simon", 
                                                                           "Brian", "Simon", "Simon", "Simon"), StationName = c("Red", "Red", 
                                                                                                                                "Red", "Green", "Yellow", "Yellow", "Yellow"), Parameter = c("Rain - Daily", 
                                                                                                                                                                                             "Temperature -Daily", "VPD - Daily", "Rain - Daily", "Rain - Daily", 
                                                                                                                                                                                             "Temperature -Daily", "VPD - Daily")), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                                                        -7L))

我正在考虑使用 str_detect 来过滤所有以“Rain –”开头的观察结果,并在名为“Rain”的新列下添加后面的内容。我已经能够使用 str_detect 过滤掉以“Rain”开头的值,但还没有找到自动分配它们的方法。有没有特定的功能可以帮助解决这个问题?恳请指点,谢谢!

我想要实现的期望输出示例:

Desired <- structure(list(ID = c(12301L, 15271L, 12301L, 15271L
), StationOwner = c("Brian", "Simon", "Brian", "Simon"), StationName = c("Red", 
                                                                         "Red", "Green", "Yellow"), Rain = c("Daily", NA, "Daily", "Daily"
                                                                         ), Temperature = c("Daily", NA, NA, "Daily"), VDP = c(NA, "Daily", 
                                                                                                                               NA, "Daily")), class = "data.frame", row.names = c(NA, -4L))

最佳答案

直接使用pivot_wider:

pivot_wider(Example, names_from = Parameter, values_from = Parameter,
        names_repair = ~str_remove(.,' .*'),values_fn = ~str_remove(.,'.*- ?'))

# A tibble: 4 x 6
     ID StationOwner StationName Rain  Temperature VPD  
  <int> <chr>        <chr>       <chr> <chr>       <chr>
1 12301 Brian        Red         Daily Daily       NA   
2 15271 Simon        Red         NA    NA          Daily
3 11888 Brian        Green       Daily NA          NA   
4 15271 Simon        Yellow      Daily Daily       Daily

关于r - 基于str_detect对列进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72724479/

相关文章:

R ggplot2 : legend should be discrete and not continuous

mysql - R 库 RMySQL 无法启动

r - makeTopMatrix 中的结构主题建模 (stm) 错误(普遍性、数据): Error creating model matrix

r - 如何在R中的xts对象中创建多个填充0的列?

r - 通过列索引而不是名称将函数应用于data.table列的子集

r - R中的极坐标变换图像

r - 在 ggplot2 中使面标签水平

r - CAPM.jensenAlpha 不适用于 Ubuntu

r - 在 R 中的模型汇总输出表中计算和显示因变量的均值

r - 使用两种不同条件过滤一周中的几天