R 避免在pivot_加宽()后的列中出现NA
是否有可能在透视图加宽后“向上移动”观察值,并移除列中观察值上方的NA?我试着让这些柱子滞后,但这似乎很麻烦。显然,我不一定要用这种方法,但我更愿意呆在整洁的房间里 当前输出如下所示:R 避免在pivot_加宽()后的列中出现NA,r,tidyr,R,Tidyr,是否有可能在透视图加宽后“向上移动”观察值,并移除列中观察值上方的NA?我试着让这些柱子滞后,但这似乎很麻烦。显然,我不一定要用这种方法,但我更愿意呆在整洁的房间里 当前输出如下所示: # A tibble: 20 x 3 Cluster_1 Cluster_2 Cluster_3 <dbl> <dbl> <dbl> 1 3 NA NA 2 13 N
# A tibble: 20 x 3
Cluster_1 Cluster_2 Cluster_3
<dbl> <dbl> <dbl>
1 3 NA NA
2 13 NA NA
3 14 NA NA
4 15 NA NA
5 16 NA NA
6 17 NA NA
7 19 NA NA
8 20 NA NA
9 NA 1 NA
10 NA 4 NA
11 NA 6 NA
12 NA 7 NA
13 NA 8 NA
14 NA 9 NA
15 NA 12 NA
16 NA 18 NA
17 NA NA 2
18 NA NA 5
19 NA NA 10
20 NA NA 11
Cluster_1 Cluster_2 Cluster_3
<dbl> <dbl> <dbl>
1 3 1 2
2 13 4 5
3 14 6 10
4 15 7 11
5 16 8 NA
6 17 9 NA
7 19 12 NA
8 20 18 NA
所需的输出如下所示:
# A tibble: 20 x 3
Cluster_1 Cluster_2 Cluster_3
<dbl> <dbl> <dbl>
1 3 NA NA
2 13 NA NA
3 14 NA NA
4 15 NA NA
5 16 NA NA
6 17 NA NA
7 19 NA NA
8 20 NA NA
9 NA 1 NA
10 NA 4 NA
11 NA 6 NA
12 NA 7 NA
13 NA 8 NA
14 NA 9 NA
15 NA 12 NA
16 NA 18 NA
17 NA NA 2
18 NA NA 5
19 NA NA 10
20 NA NA 11
Cluster_1 Cluster_2 Cluster_3
<dbl> <dbl> <dbl>
1 3 1 2
2 13 4 5
3 14 6 10
4 15 7 11
5 16 8 NA
6 17 9 NA
7 19 12 NA
8 20 18 NA
我知道,这种方法会危及数据集,但这完全是出于美观的原因,因为tibble随后会导出到LATEX文档中,并且只帮助集群分组的可视化。您可以像这样实现所需的输出: 图书馆管理员 第1111集 df% arrangeclust,项目%>% 组\u按组%>% mutateid=行数%>% pivot\u widernames\u from=clust,values\u from=item,names\u prefix=Cluster\u%>% 选择id >一个tibble:8x3 >集群1集群2集群3 > > 1 3 1 2 > 2 13 4 5 > 3 14 6 10 > 4 15 7 11 >5168NA >6179NA >7 19 12 NA >82018NA 这里是一种使用拆分和调整长度的方法
s <- split(df$item, df$clust)
as.data.frame(lapply(s, function(x) `length<-`(sort(x), max(lengths(s)))))
# X1 X2 X3
# 1 3 1 2
# 2 13 4 5
# 3 14 6 10
# 4 15 7 11
# 5 16 8 NA
# 6 17 9 NA
# 7 19 12 NA
# 8 20 18 NA
您的真实数据中有多少个集群?它是只有3个还是一个更大的数字,您无法手动处理?群集的数量取决于基础数据集。它源自Ckmeans.1d.dp,因此不可控。我想要一个通用的解决方案,它将项目列按集群编号分组进行转置。感谢此解决方案。在旋转之前,我也尝试了group_by,但似乎使用rowid_to_列是一个错误。该函数将rowid顺序添加到新列,而不考虑以前的group_by。行号不符合前面的分组。:是。我也尝试了rowid_to_专栏。但是罗维德。。。只需添加df的行名,而row_number为每个组生成row_编号。最佳S。