数据集操作

时间:2013-04-29 15:48:59

标签: r

我下面有一个大数据集是一小部分:

    V1  V2  V3  V4  V5  V6 V7  V8 V9 V10
1:  174 174  NA  NA  NA  NA NA  NA NA  NA
2:  174  NA  NA  NA  NA  NA NA  NA NA  NA
3:  174  NA  NA  NA  NA  NA NA  NA NA  NA
4:  174  NA  NA  NA  NA  NA NA  NA NA  NA
5:  174  NA  NA  NA  NA  NA NA  NA NA  NA
6:  174  NA  NA  NA  NA  NA NA  NA NA  NA
7:  174  NA  NA 174  NA 174 NA 174 NA  NA
8:  174  NA  NA  NA  NA  NA NA  NA NA  NA
9:  174  NA  NA  NA  NA  NA NA  NA NA  NA
10: 174  NA  NA  NA  NA  NA NA  NA NA  NA

我希望在有“174”的地方放置一个“1”并将其输出到一列。我正在尝试更改格式,以便我可以对数据进行逻辑回归。最终输出应如下所示:

1: 1
2: 1
3: 1
4: 1
5: 1
6: 1
7: 1
8: 1
9: 1
10: 1 

1 个答案:

答案 0 :(得分:2)

只需使用[子集运算符即可。

# Create some example data
set.seed(123)
m <- matrix( c(rep(174,5),rep(NA,20)) ,nrow=5)
m[ sample(5:25,3) ] <- 174
m
#    [,1] [,2] [,3] [,4] [,5]
#[1,]  174   NA  174   NA   NA
#[2,]  174   NA  174   NA   NA
#[3,]  174   NA   NA   NA   NA
#[4,]  174   NA   NA   NA   NA
#[5,]  174   NA   NA  174   NA


# Compare values in matrix to '174' and change to '1' if condition is TRUE
m[ m == 174 ] <- 1
m
#    [,1] [,2] [,3] [,4] [,5]
#[1,]    1   NA    1   NA   NA
#[2,]    1   NA    1   NA   NA
#[3,]    1   NA   NA   NA   NA
#[4,]    1   NA   NA   NA   NA
#[5,]    1   NA   NA    1   NA

如果您只希望在第一列中进行替换,则可以使用which在逻辑上将第一个中的值与174进行比较并更改为174的值:< / p>

m[ which( m[1:nrow(m)] == 174 ) ] <- 1
m
#    [,1] [,2] [,3] [,4] [,5]
#[1,]    1   NA  174   NA   NA
#[2,]    1   NA  174   NA   NA
#[3,]    1   NA   NA   NA   NA
#[4,]    1   NA   NA   NA   NA
#[5,]    1   NA   NA  174   NA

m[,1]
#[1] 1 1 1 1 1

在示例中,我使用矩阵并输出向量。你可以用data.frames做同样的事情(但要小心,它们与矩阵非常不同,只要你有数字数据,这将是安全);

df <- data.frame(m)
df[,1]
#[1] 1 1 1 1 1