我有一个这样的TSV文件.

readId V_segment
abc IGHV3-18-F(2695)
def IGHV3-9-F(2714),IGHV3-12-F(2656)
ghi IGHV3-9-F(2840)
jkl IGHV3-10-F(2666),IGHV3-18-F(2666)

使用R,我需要过滤,一方面,那些在列"V_segment"中包含值的行,另一方面,那些在列"V_segment"中包含两个或更多值的行(值由逗号分隔).然后创建两个表:一个表中的行在"V_segment"列中有一个值,另一个表中的行剩余.

到目前为止,我编写的代码是:

df <- read_tsv('alignments.tsv')
alignments_v <- data.frame(df$readId, df$V_segment,
                           stringsAsFactors = FALSE)
x <- alignments_v %>% separate(df.V_segment, c('V segment', 'Combinations V segment'), sep = ',')

但我得不到我想要的.

我需要获得:

一张这样的桌子:

readId V_segment
abc IGHV3-18-F(2695)
ghi IGHV3-9-F(2840)

和其他表,其中行在"V_SEGMENT"列中有两个值:

readId V_segment
def IGHV3-9-F(2714),IGHV3-12-F(2656)
jkl IGHV3-10-F(2666),IGHV3-18-F(2666)

你能帮我个忙吗?

提前谢谢您!

推荐答案

在基数R中,您可以使用grepl来筛选分隔多个条目的逗号:

V_one <- df[!grepl(",", df$V_segment),]
#   readId        V_segment
# 1    abc IGHV3-18-F(2695)
# 3    ghi  IGHV3-9-F(2840)

V_twoplus <- df[grepl(",", df$V_segment),]
#   readId                         V_segment
# 2    def  IGHV3-9-F(2714),IGHV3-12-F(2656)
# 4    jkl IGHV3-10-F(2666),IGHV3-18-F(2666)

R相关问答推荐

从具有随机模式的字符串中提取值

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

使用sensemakr和fixest feols模型(R)

变量计算按R中的行更改

R创建一个数据透视表,计算多个组的百分比

向gggplot 2中的数据和轴标签添加大写和星号

如何使用R中的dhrr函数将李克特量表的因子列从长转换为宽?

如何按排序顺序打印一个框架中所有精确的唯一值?

获取列中值更改的行号

是否可以创建一个ggplot与整洁判断的交互作用

如何在一次运行中使用count进行多列计数

如何将R中数据帧中的任何Nas替换为最后4个值

安全地测试文件是否通过R打开

R -使用矩阵reshape 列表

使用不同的定性属性定制主成分分析中点的 colored颜色 和形状

如何在条形图中的x和填充变量中包含多个响应变量?

在同一单元格中创建包含整数和百分比的交叉表

如何使投篮在R中保持一致

分隔日期格式为2020年7月1日

在shiny /bslb中,当卡片是从json生成时,如何水平排列卡片?