【发布时间】:2021-05-31 17:53:22
【问题描述】:
我有以下类型的表格:
| SEZ | Class | Val |
|---|---|---|
| 1_1_1 | 1 | 2 |
| 1_1_1 | 5 | 2 |
| 1_1_2 | 5 | 2 |
| 1_1_3 | 1 | 1 |
| 1_1_3 | 5 | 2 |
| 1_1_4 | 1 | 1 |
| 1_1_5 | 2 | 1 |
| 1_2_1 | 1 | 2 |
| 1_2_1 | 5 | 2 |
为了在多个新列中传播“类”列,从“Val”列中获取值,我使用了 pivot_wider,一切顺利。我输入了这个代码:
pivot_wider(names_from = Class, values_from = Val, names_sort=T, values_fill = list(n = 0))
得到这样的结果:
| Sez | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 1_1_1 | 2 | 0 | 0 | 0 | 2 | 0 | 0 |
| 1_1_2 | 0 | 0 | 0 | 0 | 2 | 0 | 0 |
| 1_1_3 | 1 | 0 | 0 | 0 | 2 | 0 | 0 |
不幸的是,我必须使用仅存在基本 R 包的外部计算机,并且请求额外包的时间并不短。
我尝试使用此解决方案:
newdata <- xtabs(dat$Val ~ dat$Sez + dat$Class)
但它给了我每行的频率分布:
| SEZ | Class | Freq |
|---|---|---|
| 1_1_1 | 1 | 2 |
| 1_1_2 | 1 | 0 |
| 1_1_3 | 1 | 1 |
| 1_1_4 | 1 | 1 |
| 1_1_5 | 1 | 0 |
| 1_2_1 | 1 | 1 |
我正在寻找一种具有 R 基本功能的解决方案,它为我提供了一个与使用 pivot_wider 相同的对象。
【问题讨论】: