2017-12-09 1 views
2

나는 R에 익숙하지 않고 R에서 시험을 준비하려고하는데 일주일 내에 완료 될 것입니다.집계()를 사용하여 NA 값을 계산하고 대체 방법으로 tapply()를 사용하는 방법

숙제 문제 중 하나에서 나는 한 가지 문제를 가능한 한 많은 방법으로 해결하려고 노력하고 있습니다. 시간이 제약 된 코딩 시험에서 더 많은 도구를 준비하는 것이 항상 도움이됩니다.

문제는 다음과 같습니다 내 데이터 세트에서, "ckm_nodes.csv"

변수 채택 날짜가 의사가 의사가 처방을 시작하지 않은 경우 11월 1953 년부터 계산, 테트라 사이클린을 처방하기 시작하는 달을 기록 1955 년 2 월 17 일까지 연구가 끝나면 Inf로 기록됩니다. 의사가 테트라시 클린을 채택 할 때 또는 알려지지 않았다면, 그 값은 NA입니다. 다음에 답하십시오. (a) 연구의 매달마다 얼마나 많은 의사들이 테트라 사이클린을 처방하기 시작 했습니까? (b) 연구 중 처방받지 않은 사람은 몇 명입니까? (c) NA는 몇 명입니까?


나는 매달에 규정하는 시작하는 의사의 수를 계산 집계() 함수를 사용하려고 시도했다. 내 기본 코드는 다음과 같습니다.

aggregate(nodes$adoption_date, by = nodes["adoption_date"], length), 

NA 값에 대해서만 작동합니다.

나는 집계 함수가 NA 값을 계산 할 수있는 방법이 있는지 궁금합니다, 그래서 나는 다음과 같은 말한다 집계() 함수에 R 문서 읽기 :

na.action

데이터에 NA 값이 포함될 때 어떤 일이 발생해야하는지 나타내는 함수입니다. 기본값은 주어진 변수에서 누락 된 값을 무시하는 것입니다.

그래서이 문제를 해결하고 "na.action = NULL"을 설정하는 방법을 찾아 봤습니다.

aggregate(nodes$adoption_date, by = nodes["adoption_date"], length, na.action = NULL) 

오류 재미 (X는 [[I]], ...) : 2 인자가 요구하는 '길이'에 전달이 코드를 실행하려고 할 때, 여기에 무슨 일이 있었는지입니다 1

순서대로 인수 이동할 시도 : FUN에

aggregate(nodes$adoption_date, length, by = nodes["adoption_date"], na.action = NULL) 

오류 (X [I] ...) 2 인수가 필요한 '길이'에 전달됨

그러나 작동하지 않습니다.

어떻게 해결할 수 있습니까? 하나는 Q1 숙제를 해결하기 위해 "tapply"기능을 사용할 수있는 경우

***************** tapply()

는 또한 궁금.인수가 이

을 같은 길이가 있어야합니다 ************** : 나는 ($의 adoption_date, 계산 노드, 노드) tapply에

count <- function(data){ 
return(length(data$adoption_date)) 
} 

count_tetra <- tapply(nodes,nodes$adoption_date,count) 

오류 시도 루프

같은 목표를 달성하기 위해 루프를 어떻게 사용할 수 있는지 궁금합니다.

내가 벡터 정렬하여 시작할 수 있습니다

:

nodes_sorted <- nodes[order(nodes$adoption_date),] 

그런 다음, 루프를 쓸 수 있지만 어떻게 ...?

목표는 벡터 개수를 얻고 count의 각 요소는 처방 횟수 값에 해당합니다.

감사합니다.


데이터 예 :


노드 < - data.frame ( adoption_date = 렙 (c (1 : 17, NA, Inf를) 배의 C = (REP (5,17) , 20,3))

+0

안녕하세요. 좋은 수준의 세부 정보를 제공했지만 코드 스 니펫을 코드로 형식화해야합니다. – Spangen

답변

1

data.table을 보았습니까? 나는 이런 일이 트릭을한다고 믿습니다.

require(data.table) 
# convert nodes to data.table 
setDT(nodes) 
# count occurrences for each value of adoption_rate 
nodes[, .N, by = adoption_date] 
관련 문제