25 개의 다른 변수 (밤에 다른 시간 지점)를 결합하여 새 변수를 만들려고합니다. 예를 들어 다음과 같은 다섯 가지 시점이 있습니다.많은 열을 사용하여 새 변수 만들기
net_8pm net_830pm net_9pm net_930pm net_10pm net_1030pm
1 0 0 0 1 1 1
2 0 0 0 0 0 0
3 0 0 0 0 0 0
4 0 0 1 1 1 1
5 1 0 0 0 0 0
6 0 1 1 1 1 1
내 데이터에있는 열은 34:58입니다. 그들이 지난 밤에 그물을 사용했다면 값 = 1, 그렇지 않으면 값 = 0입니다. 누락 된 데이터 포인트가 있으며 "NA"로 코딩되어 있습니다. 나는 newvar = 1을 ANY의 시간 지점 = 1로 만들고, 0이 아닌 경우 0으로 만들고 싶습니다.
나는 길고 끔찍한 ifelse 문자열을 시험해 보았는데, 이것은 추한 것이며 모든 행 (나는 182 명을 가지고 있으며, ifelse 문자열을 실행할 때만 160 개를 얻는다)을 집어 들지 않는 것 같습니다. 나 자신의 기능과 루프를 만드는 것은 끔찍한 일이다. 그래서 내가 시도한 모든 것은 흉상이었다. 내가 하나가 지칠대로 지친 얻을 - 내가하려고하는 일의 90 %
collapse_ifelse<-function(x){
+ ifelse(x==1, "yes",
+ ifelse(x==0, "no",
+ NA))
+ }
> df$net_ever<-apply(df, 2, FUN=collapse_ifelse)
아니면이 경고를 얻을 : 4450 행으로
for (i in colnames(df)[38:54]){
+ df$net_ever<- ifelse(i==1, 1,
+ ifelse(i==0, 0,
+ NA))
+ }
> table(df$net_ever)
< table of extent 0 >
하거나 회전을
> f1<-function(x){
+ for (i in 1:x)
+ ifelse(x==1, "yes",
+ ifelse(x==0, "no",
+ NA))
+ }
> df$net_ever<-apply(df, 2, FUN=f1)
There were 26 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: In 1:x : numerical expression has 182 elements: only the first used
또는 나는 182의를 얻는다 :
> df$net_ever2<-rep(0,182)
> for (i in 1:182){
+ ifelse(i==1, "yes",
+ ifelse(i==0, "no",
+ NA))
+ }
> table(df$net_ever)
0
182
당신은 I ha를 볼 수있다. 내가 여기서 뭘하고 있는지 전혀 모르겠다. (도움을 위해 이들을 게시하는 것만으로도 당혹 스럽지만 필사적 인 시간에는 필사적 인 조치가 필요하다.) 이러한 변수를 축소하는 방법에 대한 도움을 크게 주시면 감사하겠습니다. Windows 7에서 R 3.0.3을 사용하고 있습니다. 감사합니다!
당신은 인수'na.rm = T' 단지 결과 Vector가의 NA가 없습니다 있는지 확인하기를 추가 할 수 있습니다. – abel
그래서 ... 간단합니다 ... 정말 고마워요! 이것은 내가 필요한 것입니다! – ericotta