2012-01-07 5 views

답변

5

이 실제로 작동하고, 그것의 단순 개선하기 어려울 수 있습니다 :

df[ df<1 ] <- 0 

다른 방법 (미만 소형) : arr.ind=TRUE에 사용되는 행의 2 열 매트릭스를 반환하고 조건이 TRUE 인 열 [<-.data.frame과 함께 사용할 수 있지만 숫자 인덱스로 수행해야합니다.

idxs <- which(df <1, arr.ind=TRUE) 
#Warning messages: 
#1: In Ops.factor(left, right) : < not meaningful for factors 
#2: In Ops.factor(left, right) : < not meaningful for factors 
### Perfectly safe to ignore the warning 
df[ idxs[,1], idxs[,2] ] <- 0 
df 
#------------------ 
    V1 V2 V3 V4 
1 abc 1 ghf 3 
2 def 3 ftr 6 
3 scf 0 ugh 1 
+0

고마워요. 그것은 당신의 방법으로하는 것이 정말 쉬웠습니다. – user1021713

1

즉시 dput(myData) 사용할 수 있습니다, 출력이있는 변수에 할당 할 수있는 형식으로 데이터를 준 경우 도움이 될 :

> df <- structure(list(V1 = structure(1:3, .Label = c("abc", "def", "scf"           
), class = "factor"), V2 = c(1, 3, 0.2), V3 = structure(c(2L, 1L,           
3L), .Label = c("ftr", "ghf", "ugh"), class = "factor"), V4 = c(3L,          
6L, 1L)), .Names = c("V1", "V2", "V3", "V4"), row.names = c(NA,           
-3L), class = "data.frame") 

> df 
    V1 V2 V3 V4 
1 abc 1 ghf 3 
2 def 3 ftr 6 
3 scf 0.2 ugh 1 

당신은 두 번째와 세 번째의 모든 값 "라고 열 ... "하지만 아마"두 번째 및 네 번째 ... "를 의미 할 것입니다. 더

> df$V2 <- ifelse(df$V2 < 1, 0, df$V2) 
> df$V4 <- ifelse(df$V4 < 1, 0, df$V4) 
> df 
    V1 V2 V3 V4 
1 abc 1 ghf 3 
2 def 3 ftr 6 
3 scf 0 ugh 1 

?ifelse를 볼 수 있지만, 나는이 이미 수 있도록해야한다고 생각 : 여기에 내가 무엇을 할 것이라고한다.

관련 문제