gpt4 book ai didi

r - 拆分列的两个条件

转载 作者:行者123 更新时间:2023-12-04 17:30:39 25 4
gpt4 key购买 nike

我有一个这样的数据框:

我想根据“?”将第二列拆分为多列。然而这并不容易,因为刺痛中还有其他问号。所以唯一的共同点是每个子字符串都包含“http”。

怎么可能把它们分开?输出示例中的列数只是一个示例,我不知道可以生成多少列。

输入数据示例:

 df_in <- data.frame(x = c('x1','x2','x3','x4'),
y = c('http://example1.com?https://example2.com', 'NA', 'http://example3.com?id=1234?https://example4/com?http://example6.com', 'http://example5.com'))

控制台中打印的数据框:
 df_in
x y
x1 http://example1.com?https://example2.com
x2 NA
x3 http://example3.com?id=1234?https://example4/com?http://example6.com
x4 http://example5.com

预期输出示例:
df_out <- data.frame(x = c('x1','x2','x3','x4'),
col1 = c('http://example1.com', 'NA', 'http://example3.com?id=1234', 'http://example5.com'),
col2 = c('https://example2.com', 'NA', 'https://example4/com', 'NA'),
col3 = c('NA', 'NA', 'https://example6/com', 'NA'))

控制台中打印的输出:
 x                        col1                 col2                 col3
x1 http://example1.com https://example2.com NA
x2 NA NA NA
x3 http://example3.com?id=1234 https://example4/com https://example6/com
x4 http://example5.com NA NA

最佳答案

我们可以使用 separate来自 tidyr通过在 ? 处进行分隔,将“y”列分隔为多列那是在 http 之前

library(tidyr)
df_in %>%
separate(y, into = paste0("col", 1:3), sep="[?](?=http)")
# x col1 col2 col3
#1 x1 http://example1.com https://example2.com <NA>
#2 x2 NA <NA> <NA>
#3 x3 http://example3.com?id=1234 https://example4/com http://example6.com
#4 x4 http://example5.com <NA> <NA>

关于r - 拆分列的两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48741442/

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