从少数data.frame列中创建一个因子变量

时间:2017-10-17 18:04:54

标签: r dataframe

我的apiCallTasks.SelectMany(r2 => r2.Result); 看起来像这样:

data.frame

如何从中制作A <- data.frame(id = 1:5, col1 = c(0,1,1,0,0), col2 = c(2,0,0,0,0), col3 = c(0,0,0,3,3))变量,所以它看起来像这样:

factor

我知道如何从一列中制作一个因子,但不知道如何将它们合并在一起

2 个答案:

答案 0 :(得分:2)

您可以使用A <- data.frame(id = 1:5, col1 = c(0,1,1,0,0), col2 = c(2,0,0,0,0), col3 = c(0,0,0,3,3)) A$col4 <- as.factor(rowSums(A[,2:4])) str(A) > str(A) 'data.frame': 5 obs. of 5 variables: $ id : int 1 2 3 4 5 $ col1: num 0 1 1 0 0 $ col2: num 2 0 0 0 0 $ col3: num 0 0 0 3 3 $ col4: Factor w/ 3 levels "1","2","3": 2 1 1 3 3

mongoimport --uri mongodb://USER:SECRET@appname-shard-00-00-tlxyp.mongodb.net:27017,appname-shard-00-01-tlxyp.mongodb.net:27017,appname-shard-00-02-tlxyp.mongodb.net:27017/test?ssl=true&replicaSet=appname-shard-0&authSource=admin --collection scoringSystem --file /home/myUser/IdeaProjects/app/scoring-system.json

答案 1 :(得分:2)

您可以先将所有零转换为NA&#39;然后使用coalesce中的dplyr转换为&#34;合并&#34;列成一个:

library(dplyr)

A$col4 = A %>%
  select(-id) %>%
  mutate_all(funs(replace(., . == 0, NA))) %>%
  {coalesce(!!! .)} %>%
  as.factor()

<强>结果:

  id col1 col2 col3 col4
1  1    0    2    0    2
2  2    1    0    0    1
3  3    1    0    0    1
4  4    0    0    3    3
5  5    0    0    3    3

> A$col4
[1] 2 1 1 3 3
Levels: 1 2 3

注意:!!!中的{{strong> coalesce符号将参数拼接成点,因此它等同于coalesce(A$col1, A$col2, A$col3)