我有一个如下所示的数据集:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1
3 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1
4 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1
5 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1
6 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1
7 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1
8 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1
9 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1
10 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1
11 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1
12 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1
13 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1
14 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1
15 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1
16 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1
我希望根据某些原则将前三个colums组合成一个基础:
1 1 1 → 1
1 -1 -1 → 2
-1 1 -1 → 3
-1 -1 1 → 4
这是我第一次使用R语言。我不知道该怎么做。 有没有人有一些简单的代码来做到这一点?提前谢谢!
答案 0 :(得分:4)
我假装您的数据框名为df
...
test <- apply(df[1:3], 1, paste, collapse="") # this will merge the numbers of the first 3
# for each row
result <- sapply(test, switch, '111' = 1, '1-11' = 2, '-11-1' = 3, '-1-11' = 4)
如果result
是列表,请使用unlist
答案 1 :(得分:2)
鉴于前三列中有8种可能的值组合,您可能需要更具体地了解如何对组合结果进行编码。也就是说,这会将 a 映射从这些值映射到单个数字。假设您的数据集是名为dat
的数据框:
as.numeric(factor(do.call(paste, dat[1:3])))