2017-01-10 1 views
0

여기에 dat로 표현한 데이터 목록이 있습니다. 고유 한 요소와 각 요소의 빈도는 무엇인지에 따라 각 목록의 요소 수를 제공하는 방식으로 데이터를 요약하려고합니다 (예제 파일에는 4 개의 요소가 있지만 실제로는 더 클 수 있습니다. 파일). 나는 종류의 뭔가 얻을 찾고테이블 목록 요약 R

dat = list(c("a","b","c","d"), 
      c("a","a"), 
      c("b"), 
      c("c","a","c")) 

Num_element = sapply(dat, length) 
Num_table = sapply(dat, table) 
Num_unique = sapply(Num_table, length) 

(내가 아는 여러 가지 방법으로 잘못된 것입니다)

Summary_dat = cbind.data.frame(Num_element,Num_unique, Num_table) 

내가 중첩 dataframe을 할 수있는 구상 기본적으로 어떤 출력이처럼 보일 수 있도록 :

Num_element Num_unique Num_table 
1   4   4 a b c d 
2   2   1 1 1 1 1(in the same line as above) 
3   1   1 
4   3   2 

내가 원하는 것을 수행 할 수 있는지 확실하지 않습니다. 그렇지 않은 경우 데이터를 표현하는 좋은 방법은 무엇입니까? 그러면 Excel로 내보낼 수 있습니까?

+0

'Num_element = sapply (dat, length) '의 경우보다 효율적으로'Num_element = lengths (dat)'을 사용할 수 있습니다. 필자가 추천하는 것은이 복잡한 구조가 아니라 원래의리스트의 엘리먼트 위치가 data.frame 또는 rwo 요소와 일치하는 두 번째 테이블 목록을 유지하는 것입니다. – lmo

답변

1

당신이 원하는 것은 무엇입니까?

data.frame(Num_element = Num_element, 
      Num_unique = Num_unique, 
      Num_table = sapply(Num_table, function(x) paste(names(x), x, collapse=' '))) 

# Num_element Num_unique  Num_table 
#1   4   4 a 1 b 1 c 1 d 1 
#2   2   1    a 2 
#3   1   1    b 1 
#4   3   2   a 1 c 2