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

时间:2012-09-10 09:53:45

标签: 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

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

Symbol     Description
 K            Intel
 P            Diary
 C            Cape
 S            Sheath
 A            Aim

我想从原始文件中提取行,该文件与 duplicate 具有相同的符号。我希望我的输出如下:

Name     Symbol       Value
abcd       A            56   
de45       C            67
k9ug       K            43
prex       P            21

我尝试使用以下代码,但有些我无法获得任何结果或只有 A 行。这是我用过的代码

result <- original[original$Symbol %in% duplicate$Symbol,]

有人可以帮助我。

1 个答案:

答案 0 :(得分: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

如果不相关,您可以在合并之前或之后手动删除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

当然,你必须正确拼写original,你没有!{/ p>

假设

  1. names(original)中“symbol”一词的正确大小写显示为大写S(Symbol)。
  2. names(duplicate)中“符号”一词的正确大小写显示为小写s(symbol)。
  3. 如果两者都是大写的,那么您可以使用以下任一解决方案:

    merge(original, duplicate)
    original[original$Symbol %in% duplicate$Symbol, ]