如何将0 = ...,1 = ...列转换为1个单列[重复]

问题描述 投票:0回答:1

我的任务是整理一些数据,并且尝试从这种格式转换数据时遇到问题:

id occupation_busdriver   occupation_cashier   occupation_nurse
1   0                       0                    1
2   0                       1                    0
3   1                       0                    0

我的实际数据集明显更大,但这是我正在努力的领域,因此非常感谢这个集合的一个例子。

我已经尝试过使用收集和选择功能

我希望以这种格式获得数据:

id  occupation
1   nurse
2   cashier
3   busdriver
r
1个回答
1
投票

我们可以使用max.col来获取每行最大值的列索引,并根据索引获取列名

data.frame(df1[1], occupation = sub(".*_", "", names(df1))[-1][max.col(df1[-1])])
#    id occupation
#1  1      nurse
#2  2    cashier
#3  3  busdriver
© www.soinside.com 2019 - 2024. All rights reserved.