Проблема с назначением df $ COLUNM [x] = df2 $ COLUNM [y] в R - PullRequest
1 голос
/ 19 марта 2019

Несколько месяцев назад я сделал небольшой цикл для автоматического назначения столбцов двух фреймов данных.По сути, df содержит только значения «Depth», а df2 содержит значения «Depth» и «Age».Поэтому, когда значения «Глубина» равны, я могу присвоить значения «Возраст» для df.

i = 1
k = 1
while (k < length(df2$Depth)) {
  if (df2$Depth[k] == df$Depth[i]){
    df$Age2[i] = df2$Age[k]
    i = i + 1
  }
  k = k + 1
}

Недавно мне нужно было снова использовать этот цикл, но я обнаружил, что он больше не просыпается, иэто не из-за цикла ... Каждый раз, когда я хочу присвоить значения столбца с помощью df$COLUNM[x] = df2$COLUNM[y], это не работает.Значение, назначенное для df$COLUNM[x] вместо истинного значения df2$COLUNM[y], является номером строки относительно их позиции.

Просто не знаю, является ли это ошибкой или чем-то другим, что я делаю неправильно... Не понимаю, почему это работало до нескольких месяцев назад, а сейчас нет.

1 Ответ

4 голосов
/ 19 марта 2019

Единственный способ (и единственный способ, которым я могу думать) для этого - это то, что вы случайно создали факторную переменную, которая выглядит как числовую, а затем присвоили значения «истинному» числовому значению.См. Этот пример:

X <- rnorm(10)
y=factor(1:10)
y=factor(101:110)
X[4] <- y[5]
X
 [1] -0.2093544 -1.8858439 -0.1048452  5.0000000 -1.1665309
 [6] -2.1416764  1.6572388 -0.7806782  1.0002025  0.6032613

Обратите внимание, что «значение» y [5] не было «принято» X, а было назначено его относительное положение в уровнях коэффициента.Поэтому вы должны проверить:

class(df2$Age)

Я сильно подозреваю, что результатом будет "фактор".И вы можете восстановить исходные значения с помощью:

df2$Age <- as.numeric(as.character(df2$Age))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...