Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 避免在pivot_加宽()后的列中出现NA_R_Tidyr - Fatal编程技术网

R 避免在pivot_加宽()后的列中出现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

是否有可能在透视图加宽后“向上移动”观察值,并移除列中观察值上方的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
所需的输出如下所示:

# 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。