Извлечь уровень фактора за наблюдение в R data_frame? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть dataframe объект в R:

dput(data_frame("n" = seq_len(10), "g" = sample(rep(factor(c("male", "female")), 5))))

structure(list(n = 1:10, g = structure(c(2L, 2L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L), .Label = c("female", "male"), class = "factor")), .Names = c("n", 
"g"), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

Теперь я хочу добавить 3-й столбец и поставить там уровень g, где я хочу, чтобы мои уровни были 1:length(unique(g))

Я пытаюсь сделать это, используя:

df %>% mutate(l = levels(g)))

Без удачи, пожалуйста, сообщите, что мне здесь не хватает?

Вот что я хочу:

n g        l
1 male     1
2 female   2
3 male     1
4 female   2
5 male     1
..

1 Ответ

0 голосов
/ 01 июля 2018

Есть несколько вариантов:

# Store levels as list in new column
dataframe %>% mutate(l = list(levels(g)))

# Store levels as separate by ',' in new column
dataframe %>% mutate(l = paste(levels(g), collapse=","))

# Just a column with number
dataframe %>% mutate(l = as.integer(g))

# # A tibble: 10 x 3
#       n g          l
#   <int> <fctr> <int>
# 1     1 male       2
# 2     2 male       2
# 3     3 female     1
# 4     4 female     1
# 5     5 female     1
# 6     6 female     1
# 7     7 female     1
# 8     8 male       2
# 9     9 male       2
# 10    10 male       2

Предложено @ DJV

#
df %>% mutate(l = paste(seq_along(levels(g)), collapse=","))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...