根据两列的字符串长度选择行

时间:2014-01-11 22:23:50

标签: r select dataframe row

我想选择数据帧的行,其中列v3中字符串的长度等于列v4的字符串长度。 我的数据框'df'看起来像是:

    v1  v2  v3  v4
1   456 .   C   T
2   462 .   C   T
3   497 .   C   T
4   499 .   GC  AC
5   499 .   GC  G
6   499 .   GC  CC
7   513 .   GCACA   GCA
8   513 .   GCACA   GCACACA
9   513 .   GCACA   ACACA
10  513 .   GCACA   GCACACACA
11  513 .   GCACA   GCACACACACA

12  513 .   GCACA   GACCACA
13  513 .   GCACA   G
14  521 .   ACN A
15  522 .   CNN C

输出应为:

v1  v2  v3  v4
1   456 .   C   T
2   462 .   C   T
3   497 .   C   T
4   499 .   GC  AC
9   513 .   GCACA   ACACA

我尝试过:
new_df = df[nchar(str_sub(df$v3))==nchar(str_sub(df$v4))]

1 个答案:

答案 0 :(得分:3)

@agstudy得到了最重要的部分。我想补充说str_sub(来自我假设的stringr包)在这里没有做任何有用的事情。最后,您可以使用subset来避免重复使用df$。所以你可以这样做:

df[nchar(df$v3) == nchar(df$v4), ]

subset(df, nchar(v3) == nchar(v4))