从R中的数据框中提取特定行

Din*_*esh 0 r extract

我有以下类似于名为original的制表符分隔文本文件中的数据

Name     Symbol       Value
abcd       A            56   
de45       C            67
ji98       H            90
k9ug       K            43
phzt       L            98
prex       P            21
kadf       T            32
Run Code Online (Sandbox Code Playgroud)

此外,我列出了选定的符号,这些符号存储在另一个名为duplicate的制表符分隔文本文件中

Symbol     Description
 K            Intel
 P            Diary
 C            Cape
 S            Sheath
 A            Aim
Run Code Online (Sandbox Code Playgroud)

我想从原始文件中提取具有相同符号的副本的行.我希望我的输出如下:

Name     Symbol       Value
abcd       A            56   
de45       C            67
k9ug       K            43
prex       P            21
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下代码,但有些我怎么也得不到任何结果或只有A行.这是我用过的代码

result <- original[original$Symbol %in% duplicate$Symbol,]
Run Code Online (Sandbox Code Playgroud)

有谁可以帮助我.

A5C*_*2T1 8

这可以通过简单的方式完成merge:

merge(original, duplicate, by.x="Symbol", by.y="symbol")
#   Symbol Name Value Description
# 1      A abcd    56         Aim
# 2      C de45    67        Cape
# 3      K k9ug    43       Intel
# 4      P prex    21       Diary
Run Code Online (Sandbox Code Playgroud)

Description如果不相关,您可以在合并之前或之后手动删除该列.

此外,我不知道这是一个问题,如发布的问题,或者如果它是您的代码的问题,但是:

original[original$Symbol %in% duplicate$symbol, ]
#   Name Symbol Value
# 1 abcd      A    56
# 2 de45      C    67
# 4 k9ug      K    43
# 6 prex      P    21
Run Code Online (Sandbox Code Playgroud)

当然,你必须拼写original正确,你没有!

假设

  1. "符号"一词的正确大写names(original)显示为大写S(Symbol).
  2. "符号"一词的正确大写names(duplicate)显示为小写s(symbol).

如果两者都是大写的,那么您可以使用以下任一解决方案:

merge(original, duplicate)
original[original$Symbol %in% duplicate$Symbol, ]
Run Code Online (Sandbox Code Playgroud)