gpt4 book ai didi

r - 在一个数据框中拆分所有列并在 R 中创建两个数据框

转载 作者:行者123 更新时间:2023-12-04 09:40:27 26 4
gpt4 key购买 nike

我有一个看起来像这样的数据框(我们称之为 df):

col1 <- c("1/10", "2/30", "1/40", "3/23", "0/17", "7/14")
col2 <- c("2/44", "0/13", "4/55", "6/43", "0/19", "2/34")
col3 <- c("0/36", "0/87", "3/11", "2/12", "4/33", "0/12")
col4 <- c("1/76", "2/65", "2/21", "5/0", "2/26", "1/52")

df <- data.frame(col1,col2,col3,col4)

目标 :在每个单元格中有两个数字,以“/”分隔。创建两个数据框:1 个数据框带有 LEFT 编号,另一个数据框带有 RIGHT 编号。

理想情况下,最终结果如下所示:

df.left.numbers:
  col1 col2 col3 col4
1 2 0 1
2 0 0 2
1 4 3 2
3 6 2 5
0 0 4 2
7 2 0 1

df.right.numbers:
  col1 col2 col3 col4
10 44 36 76
30 13 87 65
40 55 11 21
23 43 12 0
17 19 33 26
14 34 12 53

我使用过 strsplit() ,但这是将 1 列拆分为 ONE 数据框中的两列。我还尝试了 tidyr 包中的 separator() 函数,但是它需要给定列的名称。我正在遍历所有这些。我想我可以写一个循环,但是我想知道是否有人有更简单的方法来实现这一点!

谢谢!!

最佳答案

试试这个:

require(data.table)
lapply(split(unlist(
lapply(df,tstrsplit,"/"),recursive=FALSE),c("Left","Right")),
as.data.frame)

#$Right
# col12 col22 col32 col42
#1 10 44 36 76
#2 30 13 87 65
#3 40 55 11 21
#4 23 43 12 0
#5 17 19 33 26
#6 14 34 12 52

#$Left
# col11 col21 col31 col41
#1 1 2 0 1
#2 2 0 0 2
#3 1 4 3 2
#4 3 6 2 5
#5 0 0 4 2
#6 7 2 0 1

关于r - 在一个数据框中拆分所有列并在 R 中创建两个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264435/

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