我下面有一个大数据集是一小部分:
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
答案 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