gpt4 book ai didi

r - 按值分割data.frame

转载 作者:行者123 更新时间:2023-12-04 13:42:06 25 4
gpt4 key购买 nike

我如何拆分以下data.frame

df <- data.frame(var1 = c("a", 1, 2, 3, "a", 1, 2, 3, 4, 5, 6, "a", 1, 2), var2 = 1:14)

进入/组的 list
a 1
1 2
2 3
3 4

a 5
1 6
2 7
3 8
4 9
5 10
6 11

a 12
1 13
2 14

因此,基本上,第1列中的值“a”是我要在其上分割数据帧的标记/标识符。我知道split函数,但是这意味着我必须添加另一列,并且因为从我的示例可以看出,组的大小可以变化,所以我不知道如何自动创建这样的虚拟列来满足我的需求。

有什么想法吗?

干杯,

斯文

最佳答案

您可以找到索引向量的哪些值等于“a”,然后基于该值创建分组变量,然后使用split。

df[,1] == "a"
# [1] TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
#[13] FALSE FALSE
cumsum(df[,1] == "a")
# [1] 1 1 1 1 2 2 2 2 2 2 2 3 3 3
split(df, cumsum(df[,1] == "a"))
#$`1`
# var1 var2
#1 a 1
#2 1 2
#3 2 3
#4 3 4
#
#$`2`
# var1 var2
#5 a 5
#6 1 6
#7 2 7
#8 3 8
#9 4 9
#10 5 10
#11 6 11
#
#$`3`
# var1 var2
#12 a 12
#13 1 13
#14 2 14

关于r - 按值分割data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11402088/

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