在竖线字符“|”处拆分字符串
Split string at a vertical bar character "|"
我觉得这个问题被问了很多,但我找到的所有解决方案都不适合我。
我有一个 dataframe
,其中有一列(称为 ID
),其中有一串数字和字母(例如:Q8A203
)。在几行中,有两个由竖线分隔的结构(例如:Q8AA66|Q8AAT5
)。对于我的分析,我保留哪个并不重要,所以我想创建一个名为 NewColumn
的新列,我在其中传输第一个并将字符串拆分为 |
.
我知道竖线必须区别对待,我必须把\
放在前面。我尝试了 strsplit()
和 unlist()
:
df$NewColumn <- strsplit(df$ID,split='\|',fixed=TRUE)
df$NewColumn <- unlist(strsplit(df$ID, " \| ", fixed=TRUE))
两个选项 return 从第 ID
列到 NewColumn
的内容完全相同。
非常感谢您的帮助。
无需拆分,您只需将第二部分替换为空即可,这样会保留第一个 ID。
df <- data.frame(ID = c("Q8A203", "Q8AA66|Q8AAT5"))
df$NewColumn <- sub("\|.*$","", df$ID, )
df
# ID NewColumn
# 1 Q8A203 Q8A203
# 2 Q8AA66|Q8AAT5 Q8AA66
请下次添加一个最小的可复制示例(您的 df
此处)以加快回答速度;)
如果您删除固定选项,strsplit 可以工作,但您需要提供一个准确的正则表达式。此外,之后您将需要使用一个列表,这更复杂。
# Working with a list
unlist(lapply(strsplit(df$ID, split='\|'), "[[", 1))
我觉得这个问题被问了很多,但我找到的所有解决方案都不适合我。
我有一个 dataframe
,其中有一列(称为 ID
),其中有一串数字和字母(例如:Q8A203
)。在几行中,有两个由竖线分隔的结构(例如:Q8AA66|Q8AAT5
)。对于我的分析,我保留哪个并不重要,所以我想创建一个名为 NewColumn
的新列,我在其中传输第一个并将字符串拆分为 |
.
我知道竖线必须区别对待,我必须把\
放在前面。我尝试了 strsplit()
和 unlist()
:
df$NewColumn <- strsplit(df$ID,split='\|',fixed=TRUE)
df$NewColumn <- unlist(strsplit(df$ID, " \| ", fixed=TRUE))
两个选项 return 从第 ID
列到 NewColumn
的内容完全相同。
非常感谢您的帮助。
无需拆分,您只需将第二部分替换为空即可,这样会保留第一个 ID。
df <- data.frame(ID = c("Q8A203", "Q8AA66|Q8AAT5"))
df$NewColumn <- sub("\|.*$","", df$ID, )
df
# ID NewColumn
# 1 Q8A203 Q8A203
# 2 Q8AA66|Q8AAT5 Q8AA66
请下次添加一个最小的可复制示例(您的 df
此处)以加快回答速度;)
如果您删除固定选项,strsplit 可以工作,但您需要提供一个准确的正则表达式。此外,之后您将需要使用一个列表,这更复杂。
# Working with a list
unlist(lapply(strsplit(df$ID, split='\|'), "[[", 1))