我有以下类型的表:
| 经济特区|类|瓦尔|
| --|--|--|
| 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 |
为了将列“Class”扩展到多个新列中,从“Val”列获取值,我使用了pivot_wider,一切都很顺利。我输入了以下代码:
第一个月
得到这样的结果:
| 经济特区| 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)
但它给了我每行的频率分布:
| 经济特区|类|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得到的对象相等的对象。
3条答案
按热度按时间noj0wjuj1#
我们将'Class'创建为
factor
并使用xtabs
字符串
型
如果我们需要
data.frame
输出,型
数据
型
bgibtngc2#
另一个使用
reshape
+merge
的基本R选项字符串
给
型
57hvy0tb3#
当“Values”列包含整数时会发生什么?
我尝试将@akran解决方案(上面发布的)应用到这个表(碰巧在“Values”列中有字符串而不是整数)。
数据
字符串
运行此命令将导致错误:
型
x1c 0d1x的数据
我们需要将输出列“瓦尔”转换为数值,然后将其返回为文本。此脚本完成了这项工作(R版本4.3.1(2023-06-16)&djr 1.1.2):
型
测试结果:
我将写另一篇文章(here)与此问题的情况下,这一个不完全匹配的问题.希望这有帮助!有时是耗时的事情在R基地,但正如问题中提到的,当你不得不使用没有更新的技术,你不是IT管理员,没有其他方法(特别是如果你必须在明天交付!).