我有一个格式如下的数据表:
Name A1 A2 A3 A4
Object 1 1 0 1 0
Object 2 1 0 0 0
Object 3 0 1 0 1
我想要完成的事情:
Name Skill LeveL Skill Level Skill Level Skill Level
Object 1 A1 1 A2 0 A3 1 A4 0
Object 2 A1 1 A2 0 A3 0 A4 0
Object 3 A1 0 A2 1 A3 0 A4 1
在R中,实现这一目标的最佳方法是什么?我知道R无法处理重复的列名。为了防止这种情况,'Skill1,Level1 - Skill2,Level2'可以正常工作以及列名。我的源数据表具有动态范围的列名称(因此,它取决于它包含2到40个列名称的子集)。
答案 0 :(得分:1)
你可以试试这个
ll <- lapply(2:ncol(df), function(x) data.frame(Skill = names(df[x]), Level = df[, x]))
cbind(Name = df[, 1], do.call('cbind', ll))