【问题标题】:R: Getting a string from entire dataframe based on patternR:根据模式从整个数据帧中获取字符串
【发布时间】:2020-03-16 05:23:01
【问题描述】:

假设我有一个包含这些详细信息的数据框:

Name   Card1    Card2
A      A11234   A24321
B      B11234   B24321
C      C11234   C24321
D      D11234   D24321
E      E11234   E24321

我想根据字符形式的模式“1234”和“4321”从这个数据框中提取字符串。假设我将字符串提取到名为 all_cards 的变量中,期望的结果如下所示:

> all_cards
 [1] "A11234"           "A24321"            "B11234"          "B24321"        
 [5] "C11234"           "C24321"            "D11234"          "D24321"     
 [9] "E11234"           "E24321"        

> str(all_cards)
 chr [1:10] "A11234" "A24321" "B11234" "B24321" ...

请指教,提前谢谢!

【问题讨论】:

  • 如给定的那样,all_cardsstr(all_cards) 不匹配。为什么all_cards 只有 3 个元素?这些是list 元素吗? str(all_cards) 建议使用 character 向量。

标签: r string dataframe get


【解决方案1】:

您可以unlist 数据框并使用grep

all_cards <- unname(grep('1234|4321', unlist(df), value = TRUE))

【讨论】:

    【解决方案2】:

    您可以使用t 转置数据框(不包括name 列)并同时将其强制转换为矩阵。最后将其强制为as.vector

    as.vector(t(dat[-1]))
    # [1] "A11234" "A24321" "B11234" "B24321" "C11234" "C24321" "D11234" "D24321" "E11234"
    # [10] "E24321"
    

    数据

    dat <- structure(list(Name = c("A", "B", "C", "D", "E"), Card1 = c("A11234", 
    "B11234", "C11234", "D11234", "E11234"), Card2 = c("A24321", 
    "B24321", "C24321", "D24321", "E24321")), row.names = c(NA, -5L
    ), class = "data.frame")
    

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2017-01-25
      • 2021-04-16
      • 2018-06-07
      • 2014-03-10
      相关资源
      最近更新 更多