我有一个大型数据集,我想分成单独的单位。现在,这些单位障碍以NA标记,但我该如何拆分?样本集:
df=matrix(c(1,2,3,4,NA,6,7,8,NA,10,11,12),ncol=1,byrow=TRUE)
给我们
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] NA
[6,] 6
[7,] 7
[8,] 8
[9,] NA
[10,] 10
[11,] 11
[12,] 12
我希望这三个存储在单独的变量中,例如
a
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
b
[,1]
[1,] 6
[2,] 7
[3,] 8
c
[,1]
[1,] 10
[2,] 11
[3,] 12
这有意义吗?感谢。
答案 0 :(得分:2)
删除缺失值后使用split
和cumsum
的一行解决方案:
split(df[!is.na(df)],cumsum(is.na(df))[!is.na(df)])
$`0`
[1] 1 2 3 4
$`1`
[1] 6 7 8
$`2`
[1] 10 11 12
答案 1 :(得分:1)
我不确定“数据集”是否表示真正的矩阵或data.frame。这是一个data.frame示例,矩阵类似
df <- data.frame(a=c(1,2,3,4,NA,6,7,8,NA,10,11,12))
gg <- ifelse(is.na(df$a),NA, cumsum(is.na(df$a)))
split(df, gg)
我们只是使用gg
作为新变量来计算每次看到NA时的数量,以便我们可以将这些部分分组。我们还保留NA值以丢弃它们以进行拆分。最后split()
使用这个新的分类变量做我们想要的。
$`0`
a
1 1
2 2
3 3
4 4
$`1`
a
6 6
7 7
8 8
$`2`
a
10 10
11 11
12 12