【问题标题】:Only keeping string text present in another dataframe in R仅将字符串文本保留在 R 中的另一个数据框中
【发布时间】:2018-01-20 11:23:30
【问题描述】:

我对 R 比较陌生。

我有两个数据框,每个变量都只称为finalcv

final 看起来像:

V1
humans, aged, female, stroke
infant, male, echocardiography
aneurysm, adolescent, female, diabetes
pregnant, diabetes, female
cardiovascular diseases, complications

cv 看起来像

V2
stroke
pregnant
echocardiography
aneurysm
diabetes
cardiovascular diseases

我想操作final,使其仅包含cv 中的文本。这就是我希望得到的 final 数据框的样子:

V1
stroke
echocardiography
aneurysm, diabetes
pregnant, diabetes
cardiovascular diseases

请指教。谢谢!

【问题讨论】:

标签: r string dataframe text subset


【解决方案1】:

我们可以使用dplyrstringr 中的函数。此外,rebus 中的 or1 函数对于构造正则表达式短语非常有用。 str_extract_all 可以提取所有匹配的字符串。如果有多个短语,str_extract_all 的输出将创建类似c("aneurysm", "diabetes") 的内容。我用fixed 使用了几个str_replace 调用来将c()" 替换为空。这部分可以使用正则表达式更有效地完成,但我不熟悉正则表达式。 df_final 是最终输出。

# Load packages
library(dplyr)
library(stringr)
library(rebus)

# Create example data frame
df1 <- data_frame(V1 = c("humans, aged, female, stroke", "infant, male, echocardiography",
                         "aneurysm, adolescent, female, diabetes", "pregnant, diabetes, female",
                         "cardiovascular diseases, complications"))
df2 <- data_frame(V2 = c("stroke", "pregnant", "echocardiography", "aneurysm", 
                         "diabetes", "cardiovascular diseases"))

# Process the data
df_final <- df1 %>%
  mutate(V1 = str_extract_all(V1, or1(df2$V2))) %>%
  mutate(V1 = str_replace(V1, fixed("c("), "")) %>%
  mutate(V1 = str_replace(V1, fixed(")"), "")) %>%
  mutate(V1 = str_replace_all(V1, fixed('"'), ""))

【讨论】:

  • 谢谢,但您的代码只提取了每行中显示的第一个短语。例如,在第三行,我想要aneurysm, diabetes,但你的代码只输出aneurysm
  • @sweetmusicality 请查看我的更新。我相信df_final 现在符合您的预期输出。
  • 谢谢 - 我会试试这个。但是,您能否更新您的变量,以便两个数据框具有不同的变量(V1V2),因为我担心否则我会使用错误的变量。谢谢!
  • 根据你原来的更新,我也相应地更新了我的代码。
  • 如果final$V1 没有用逗号分隔的短语(根本没有分隔 - 仍然需要与cv$V2 完全匹配),我将如何进行字符串匹配?
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 2014-06-04
  • 2018-07-10
  • 2020-11-25
  • 1970-01-01
  • 2014-08-29
相关资源
最近更新 更多