gpt4 book ai didi

r - 每隔一行拆分变量以在 data.frame 中形成两个新列

转载 作者:行者123 更新时间:2023-12-04 11:18:39 24 4
gpt4 key购买 nike

抓取 pdf 后,我有一个带有 chr 文本变量的数据框:

df = data.frame(text = c("abc","def","abc","def"))

我的问题是如何把它变成:
df = data.frame(text1 = c("abc","abc"),text2=c("def","def"))

我能够索引行并手动重建新的 df,但很好奇是否可以在 dplyr 内完成。管道。

我能找到的所有解决方案都涉及拆分每一行,但不涉及将变量的整行拆分为新列。

最佳答案

使用 dplyr您可以创建一个新列( ind )用于分组,每个交替行都有相同的值,然后我们 group_by ind并创建一个序列列( id )到 spread将数据分成两列。

library(dplyr)
library(tidyr)

df %>%
mutate(ind = rep(c(1, 2),length.out = n())) %>%
group_by(ind) %>%
mutate(id = row_number()) %>%
spread(ind, text) %>%
select(-id)


# `1` `2`
# <fct> <fct>
#1 abc def
#2 abc def

基本 R 选项是 split df使用 rep 将每个交替行创建为一个序列的单独数据帧和 cbind它们一起形成2列数据​​框。
do.call("cbind", split(df, rep(c(1, 2), length.out = nrow(df))))

# text text
#1 abc def
#3 abc def

关于r - 每隔一行拆分变量以在 data.frame 中形成两个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843589/

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