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より大きい場合は、その値に.01を掛けてから、2を引きます。

私の理由は、200以上の値は月齢であるためです。

私は統計や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 に答える