2016-08-16 2 views
0

가있을 때, data.frame에서 일부 행을 변경, 2 개 논리적 조건 예를 들어

Name <- c("Ben", "Dana", "Ben", "Ellen", "Ellen", "Ben", "Ben", "George") 
Date <- c(2016-12-02, 2015-03-03, 2014-05-03, 2010-05-05, 
      2016-02-02, 2015-03-04, 2014-05-08, 2010-06-05) 
Type <- c("ES pp", "ES pr", "ES pp", "LT pp", "LT pp", "ES pp", "LT pp", "LT pp") 
mydata <- data.frame(Name, Date, Type) 

mydata$Name=="Ben" & mydata$Type=="ES pp" 경우에, 나는 예를 들어 "LT pr""ES pp"을 변경하고 싶습니다. 다음 번에 mydata라고 전화 할 때, 나는 그것을 항상 바꿔 놓고 싶습니다.

어떻게하면됩니까?

답변

1

예제 mydata이 쓰여진 방식으로, Type이 해결 방법을 어렵게 만듭니다.

의 당신이 그 의미하지 않았다 가정하자 및 Type는 요인이 될 안된다 :

mydata <- data.frame(Name, Date, Type, stringsAsFactors = FALSE) 

> mydata 
    Name Date Type 
1 Ben 2002 ES pp 
2 Dana 2009 ES pr 
3 Ben 2006 ES pp 
4 Ellen 2000 LT pp 
5 Ellen 2012 LT pp 
6 Ben 2008 ES pp 
7 Ben 2001 LT pp 
8 George 1999 LT pp 

는 그런 다음 데이터 프레임에서 인덱스 변수를 조건부을 사용할 수 있고, 값을 대체합니다. 당신이 는 인자로 Type위한 의도 않은 경우 'LT pr'이 예는 기록 적어도 방법, 당신의 요인 수준 중 하나 아니라고

mydata$Type[mydata$Name == 'Ben' & mydata$Type == 'ES pp'] <- 'LT pr' 

> mydata 
Name Date Type 
1 Ben 2002 LT pr 
2 Dana 2009 ES pr 
3 Ben 2006 LT pr 
4 Ellen 2000 LT pp 
5 Ellen 2012 LT pp 
6 Ben 2008 LT pr 
7 Ben 2001 LT pp 
8 George 1999 LT pp 

지금, 당신은 문제가있다. 당분간 나는 이것이 당신이 의미하는 바가 아니길 바랄 것입니다. 왜냐하면 그 문제를 해결하기가 훨씬 더 복잡하고, 당신의 질문에서 바라는 것을 산만하게 생각하기 때문입니다.