在R中分配df $ COLUMN [x] = df2 $ COLUMN [y]的问题

问题描述 投票:1回答:1

几个月前,我做了一个小循环,自动分配两个数据帧的列。基本上,df仅包含“深度”值,df2包含“深度”和“年龄”值。因此,当“深度”值相等时,我可以将“年龄”值分配给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
}

最近我需要再次使用这个循环,但我发现它不再是woking了,并不是因为循环...任何时候我想通过df$COLUNM[x] = df2$COLUNM[y]分配colunm的值它不起作用。为df$COLUNM[x]而不是真值df2$COLUNM[y]分配的值是相对于其位置的行号。

只是不知道这是一个错误还是我做错了什么......不要理解为什么这个工作要到几个月前才能工作,现在却不行。

r
1个回答
4
投票

这种情况的一种方式(也是我能想到的唯一方法)就是你无意中创建了一个看起来像数字的因子变量,然后将值赋给“真”数字。看这个例子:

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))
© www.soinside.com 2019 - 2024. All rights reserved.