2017-01-10 6 views
-2

현재 데이터 프레임의 변수를 조건부로 업데이트해야하는 프로젝트에서 작업 중입니다. 가장 간단한 방법은 sqldf/RSQLite를 사용하는 것입니다. 지금까지 여러 코드의 조합을 시도하고 이것이 내가이 주제에 수행 한 연구에서R - sqldf - 업데이트 쿼리

sqldf("UPDATE dataframe SET Variable = 'New Text Value' WHERE Variable.name.category = 'Text Value'") 

(데이터 집합을 anonymising)와 멀리있어 사람이다, 나는 sqldf이 문제가 이해 와 더불어 '.' 캐릭터. 이 간단한 해결 방법이 있습니까?

미리 감사드립니다. 모든 sqldf에 대한

dataframe$Variable[dataframe$Variable.name.category == "Text Value"] <- "New Text Value" 

필요가 없습니다 :

+0

는 점은 연산자입니다. SQL에서 점을 포함하는 변수 이름을 사용하려면 변수 이름을 두 x 인용해야합니다. 이것은 sqldf의 문제가 아니지만 SQL의 작동 방식입니다. 또한'update'는 값을 반환하지 않으므로'c ('update dataframe ...', 'select * from dataframe')'을 사용하여 실제로 어떤 것을 반환해야합니다. –

답변

1

조건 뭔가를 업데이트하는 가장 쉬운 방법은 이것이다.

개념은 논리적 색인화입니다. 논리 표현식 dataframe$Variable.name.category == "Text Value"의 진리 값을 기반으로 데이터 프레임의 Variable 열에 인덱싱합니다.

또 다른 옵션은 dplyr 함께 :

R 달리
dataframe <- dataframe %>% 
    mutate(Variable = ifelse(
    Variable.name.category == "Text Value", 
    "New Text Value", 
    Variable) 
) 
+0

정말 고마워요! 나는 내가 인생을 혼란스럽게 만들었다는 것을 알았다. – Stig0501