Мои факторы превращаются в целое число во время воздействия: я не хочу этого - PullRequest
0 голосов
/ 09 марта 2020

Иметь фрейм данных (фрейм 1) со столбцом (фактом), который состоит из факторов. Я создал новый фрейм данных (фрейм 2) следующим образом:

Matching_list <- setNames(data.frame(matrix(ncol = 3, nrow = nrow(HH))), c("ProIDS", "Pol_Centre", "Dist"))

Теперь, когда я выбираю некоторые элементы из переменная, фактически, в первом кадре данных и влияющая на них новая структура данных, все эти элементы превращаются в целые числа. Итак, я вижу целые числа (цифры, которые я не знаю, откуда они взялись) вместо исходного описания в первом кадре данных.

Не могли бы вы дать мне несколько советов, как я могу выполнить воздействие, не теряя информацию (я имею в виду, чтобы мои факторы оставались такими же, как в первом кадре данных)

1 Ответ

0 голосов
/ 09 марта 2020

Вот полностью предварительное решение вашей проблемы (поскольку вы не предоставили никаких воспроизводимых данных).

Предполагается, что у вас есть такие данные:

df1 <- data.frame(fact = LETTERS[1:10])

если вы посмотрите на структуру переменной fact, вы увидите, что это фактор:

str(df1)
'data.frame':   10 obs. of  1 variable:
 $ fact: Factor w/ 10 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10

Теперь предположим, что, как вы говорите, у вас есть другой фрейм данных, например:

set.seed(100)
df2 <- data.frame(varX = rnorm(10))

и именно этому фрейму данных вы хотите присвоить некоторый коэффициент level из fact в зависимости от некоторого условия и хотите получить в выходных данных не целое число, а фактическое уровень фактора, это можно сделать, используя levels:

df2$fact <- ifelse(df2$varX < 0, levels(df1$fact)[1], NA) # if varX < 0 "A" else NA
df2
          varX fact
1  -0.50219235    A
2   0.13153117 <NA>
3  -0.07891709    A
4   0.88678481 <NA>
5   0.11697127 <NA>
6   0.31863009 <NA>
7  -0.58179068    A
8   0.71453271 <NA>
9  -0.82525943    A
10 -0.35986213    A

Но учтите, что если вы теперь проверите структуру df2, R преобразовал df2$fact в символьную переменную:

str(df2)
'data.frame':   10 obs. of  2 variables:
 $ varX: num  -0.5022 0.1315 -0.0789 0.8868 0.117 ...
 $ fact: chr  "A" NA "A" NA ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...