gpt4 book ai didi

删除数据框中单元格中包含多个字符串的行

转载 作者:行者123 更新时间:2023-12-02 09:45:35 27 4
gpt4 key购买 nike

我有一个包含 8 列和很多行的数据框。我想删除第 6 列和第 7 列中包含多个字符串的行,并输出第 6 列和第 7 列中仅包含一个字符串的数据框

df:

ID  Content_ID  Chromosome  Start   Stop    Reference   Alternate Length
1299675221 backbone 12 99675221 99675221 GG T 0
1298583685 backbone 12 98583685 98583685 C T 0
129833474 backbone 12 9833474 9833474 C T 0
1297722695 backbone 12 97722695 97722695 A G 0
1297381269 backbone 12 97381269 97381269 T C 0
1297081605 backbone 12 97081605 97081605 G AA 0
1297058068 backbone 12 97058068 97058068 T C 0
1295891848 backbone 12 95891848 95891848 CCTT ATA 0
1294164312 backbone 12 94164312 94164312 T C 0
12940191 backbone 12 940191 940191 T C 0

期望的输出:

ID  Content_ID  Chromosome  Start   Stop    Reference   Alternate   Length
1298583685 backbone 12 98583685 98583685 C T 0
129833474 backbone 12 9833474 9833474 C T 0
1297722695 backbone 12 97722695 97722695 A G 0
1297381269 backbone 12 97381269 97381269 T C 0
1297058068 backbone 12 97058068 97058068 T C 0
1294164312 backbone 12 94164312 94164312 T C 0
12940191 backbone 12 940191 940191 T C 0

最佳答案

我们可以使用lapply循环遍历第6列和第7列,检查字符数是否为1,使用Reduce&来通过比较list的相应元素得到一个逻辑向量,用它来子集'df'的行

df[Reduce(`&`, lapply(df[6:7], function(x) nchar(x)==1)),]
# ID Content_ID Chromosome Start Stop Reference Alternate Length
#2 1298583685 backbone 12 98583685 98583685 C T 0
#3 129833474 backbone 12 9833474 9833474 C T 0
#4 1297722695 backbone 12 97722695 97722695 A G 0
#5 1297381269 backbone 12 97381269 97381269 T C 0
#7 1297058068 backbone 12 97058068 97058068 T C 0
#9 1294164312 backbone 12 94164312 94164312 T C 0
#10 12940191 backbone 12 940191 940191 T C 0
<小时/>

或者另一个选项是rowSums

df[!rowSums(nchar(as.matrix(df[6:7]))!=1),]

关于删除数据框中单元格中包含多个字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196433/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com