1

我试图找出一种方法来遍历我的数据框并用小数点替换任何大于 200 的值。

这是我的代码:

for (i in data$AGE) if (i > 199) i <- i*.01-2

这是我的数据框的 head() 示例:

  AGE LOC RACE SEX WORKREL PROD1 ICD10 INJ_ST DTH_YEAR DTH_MONTH DTH_DAY ACC_YEAR ACC_MONTH ACC_DAY
1  26   5    1   1       0  1290  V865     UT     2003         1       1     2002        12      31
2  20   1    7   2       0  1899   X47     HI     2003         1       1     2003         1       1
3 202   1    2   2       0  1598   W75     FL     2003         1       1     2003         1       1
4  86   5    1   2       0  1807   W18     FL     2003         1       1     2002        12      14
5 203   1    2   1       0  1598   W75     GA     2003         1       1     2003         1       1
6  79   0    1   2       2   921   X49     MA     2003         1       1       NA        NA      NA

所以基本上,如果 AGE 的值大于 200,那么我想将该值乘以 0.01,然后减去 2。

我的原因是因为 200 或更大的任何值都是以月为单位的年龄。

我不是 Stats 或 R 天才,所以我先谦虚地感谢所有建议。

4

2 回答 2

3
data$AGE[data$AGE> 200] <- data$AGE[data$AGE > 200] * 0.01 - 2
于 2012-10-02T21:34:46.743 回答
3

within你可以相当优雅地做到这一点replace

data <- within(data, AGE <- replace(AGE, AGE > 200, AGE[AGE>200] * 0.01-2))

data.table用于内存效率和语法优雅

library(data.table)
DT <- as.data.table(data)
# make sure that AGE is numeric not integer
DT[,AGE:= as.numeric(AGE)]

DT[AGE>200, AGE := AGE *0.01 -2]
于 2012-10-02T23:05:17.057 回答