의 데이터 프레임에서 NAs를 계산하는 "테이블"기능을 설득하여 다시 질문하고 싶습니다. 기본적으로 [R]의 데이터 프레임, NAs 및 표 기능에 관한 것입니다.[R]
이 데이터 프레임이 있습니다. 나는 이미 이전 질문에서 이것을 사용했다. 내가의 분포를 계산하기 위해 관리해야
id <-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3)
a <-c(3,1,3,3,1,3,3,3,3,1,3,2,1,2,1,3,3,2,1,1,1,3,1,3,3,3,2,1,1,3)
b <-c(3,2,1,1,1,1,1,1,1,1,1,2,1,3,2,1,1,1,2,1,3,1,2,2,1,3,3,2,3,2)
c <-c(1,3,2,3,2,1,2,3,3,2,2,3,1,2,3,3,3,1,1,2,3,3,1,2,2,3,2,2,3,2)
d <-c(3,3,3,1,3,2,2,1,2,3,2,2,2,1,3,1,2,2,3,2,3,2,3,2,1,1,1,1,1,2)
e <-c(2,3,1,2,1,2,3,3,1,1,2,1,1,3,3,2,1,1,3,3,2,2,3,3,3,2,3,2,1,4)
df <-data.frame(id,a,b,c,d,e)
df
: 그것은 의도적으로 내 데이터베이스, 나는 거대한 데이터베이스와 사람을 성가 시게 기꺼이하지 않다, 내 진짜 '안양'dataframe 다시 실제로 훨씬 더 큰,이 간단한 보이는 ... 그래서 그 수는 'b'에서 'e'까지의 열에서 발생하지만 동시에 'id'열의 id 번호에 의해 'groupped'되어야한다는 사실을 고려할 때. 그것은, 그것을 확인 잘 작동 ->
matrix(matrix(unlist(lapply(df[,(-(1))],
function(x) tapply(x,df$id,tabulate,
nbins=nlevels(factor(df[,2])))) [[1]])),
ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,3])))) [[2]])),ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,4])))) [[3]])),ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,5])))) [[4]])),ncol=3,nrow=3,byrow=TRUE)
matrix(matrix(unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,6])))) [[5]])),ncol=4,nrow=3,byrow=TRUE)
이제 내 문제 : 나는 내 내장 표로 기능뿐만 아니라 이들의 NA를 수집 할 경우 내 데이터 프레임 여기 저기 어떤 NA 값이 포함되어 있으면 무엇? 그렇다면이 NAs에서 발생한 사건의 수를 계산하려면 어떻게해야합니까? 처음에는이 같은 시도에
id <-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3)
a <-c(NA,1,3,3,1,3,3,3,3,1,3,2,1,2,1,3,3,2,1,1,1,3,1,3,3,3,2,1,1,3)
b <-c(3,2,1,1,1,1,1,1,1,1,1,2,1,3,2,1,1,1,2,1,3,1,2,2,1,3,3,2,3,2)
c <-c(1,3,2,3,2,1,2,3,3,2,2,3,NA,2,3,3,3,1,1,2,3,3,1,2,2,3,2,2,3,2)
d <-c(3,3,3,1,3,2,2,1,2,3,2,2,2,1,3,1,2,2,3,2,3,2,3,2,1,1,1,1,1,2)
e <-c(2,3,1,2,1,2,3,3,1,1,2,1,1,3,3,2,1,1,3,3,2,2,3,3,3,2,3,NA,1,4)
df <-data.frame(id,a,b,c,d,e)
df
:
다음은 NAS가 내 수정 된 데이터 프레임이다, 내가 한 유일한 것은 내가이 적용하려한다는
당신이 볼unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,2],exclude=NULL)))) [[1]])
했다 exclude=NULL
건.
최소한 내 코드는 열 a
(1,2,3,NA)
에 4 개의 다른 레벨을 가지고 있으며 세 가지가 아니라 (1,2,3)
이라는 사실을 깨닫습니다. 여기에서 확인하십시오 :
nlevels(factor(df[,2], exclude=NULL))
그러나 결과적으로 NA로는 계산할 수 없습니다. 대신 올바른의
3 0 6 0 4 3 3 0 4 1 5 0
을 말한다
3 0 6 1 4 3 3 0 4 1 5 0
또는의 경우 :
는unlist(lapply(df[,(-(1))],function(x) tapply(x,df$id,tabulate,nbins=nlevels(factor(df[,4],exclude=NULL)))) [[3]])
대신 올바른
의2 4 4 0 2 3 4 0 1 5 4 0
을 말한다3210
2 4 4 0 2 3 4 1 1 5 4 0
등
사람이 어떻게 "설득"하는 기능 도표로하여 NAS를 계산하는 어떤 아이디어가 있습니까? 전혀 가능합니까? 즐거운 주말
정말 감사하고 있고,
라즐로
-1 또한 r-help –
@G에 게시되었습니다. Grothendieck --- Gabor, 투표 시스템 IMHO의 부적절한 사용입니다. 투표 메커니즘은 유용한 Q 또는 명확한 Q 대 유용하지 않거나 불분명 한 Q를 식별하는 것을 목표로합니다. 그래서 Q가 여기에 게시되어 있다면 여기에 R-Help의 별도 엔티티가 필요합니다. @Laszlo가 그의 Q와 함께 몇몇 SE 사이트를 스팸 한 것 같지 않다. –
또한 "진짜 Q가 아님"으로 결론을 내린 사람은 누구이며, 어떻게 그 의견을 얻습니까? 지나치게 노골적인 코드가 전달되면 Q는 합리적으로 명확합니다. @ 라즐로는 다른 수준의 요인뿐만 아니라 'NA'도 계산하려고합니다. –