2015-01-31 2 views
-1

VariableA & VariableB을 포함하는 두 변수 데이터 프레임 data이 있습니다. 두 컬럼 모두 문자 클래스입니다. grep은 대문자가있는 요소의 변수 A입니다. 그런 다음 해당 요소가 포함 된 행을 사용하여 B 열의 Foos를 "Yes"로 변경하고 싶습니다. grep 부분은 잘 작동 :grep + 벡터의 값을 R으로 변경

data <- data.frame(VariableA = c("A","a","B","b","C","c","D","d"),VariableB= c("Foo", "Foo","Foo", "Foo","Foo","Foo","Foo","Foo")) 
grep("[A-Z]", data$VariableA) 

이 대문자가있는 행 번호를 모두 포함하는 정수 문자열을 반환합니다. 한 번에 대문자가있는 사람들에 대해서만 VariableB의 값을 변경하는 방법이 있습니까? 하위 집합과 병합을 사용하지 않고?

+0

어떤 언어를 사용하고 있습니까? –

+0

문제는 없지만 'R'을 포함하도록 질문 태그 집합을 업데이트하십시오. –

+0

'VariableB'에서 어떻게 값을 변경 하시겠습니까? –

답변

2

[질문에 제공된 코드를 사용하도록 편집]

다음은 어떻게 수행할까요? 이렇게하면 B 열의 값과 A에 대문자가 포함 된 행의 값이 변경됩니다.

# Create data frame, keep strings as strings 
data <- data.frame(VariableA = c("A","a","B","b","C","c","D","d"),VariableB= c("Foo", "Foo","Foo", "Foo","Foo","Foo","Foo","Foo"), stringsAsFactors=FALSE) 

# A single call to change column B when column A contains a capital letter 
data[grep("[A-Z]", data$VariableA), "VariableB"] <- "newFoo" 
0

당신은 VariableB의 값을 변경하는 기능 replacegrep에 의해 생성 된 인덱스 벡터를 사용할 수 있습니다

idx <- grep("[A-Z]", data$VariableA) 
data$VariableB <- replace(as.character(data$VariableB), idx, "Yes") 

이 명령은 "ABC"VariableB의 값을 대체 VariableA에 대문자가 있다면. 팩터 VariableB을 문자 벡터로 변환해야합니다.