2016-06-13 4 views
-1

나는이 형식R에서 변형을 사용할 때 한 행에 여러 값을 넣는 방법은 무엇입니까?

"x" "y" 
1 A text1 
2 A text2 
3 A text3 
4 B text4 
5 B text4 
6 B text5 
7 C text6 

와 프레임을 가지고 있고이로 변환해야합니다

"x" "y"  
1 A text1;text2;tex3 
2 B text4;text5 
3 C text6 
아마 모양 변경하여 수행 또는 개주하지만 텍스트 값을 유지하는 방법을 잘 메신저 수 있습니다

같은 줄에. 감사합니다.

+0

을 사용할 수 있습니다, 대답은 조금 더 일반적인 (여러 열 처리)가있다. 'paste (., collapse = ";")'를 사용하는 한 대답은 아마도이 질문에 대답 할 것입니다. – steveb

+0

감사합니다. 때로는 스페인어에서 영어로 아이디어를 집어 넣기가 어려우며 포럼의 나머지 부분에서 검색을 더 어렵게하는 경우가 있습니다. 나는 다음에 더 조심하려고 노력할 것이다. – christian

답변

2

우리는 좋은 캐치 @thelatemail data.table

library(data.table) 
setDT(df1)[, .(y= toString(y)), by = x] 
2

당신은 다음과 같이이 작업을 수행하는 dplyr을 사용할 수

library(dplyr) 

### Data is set from "dput" output. 
data_xy <- structure(list(x = c("A", "A", "A", "B", "B", "B", "C"), y = c("text1", "text2", "text3", "text4", "text4", "text5", "text6")), class = "data.frame", .Names = c("x", "y"), row.names = c(NA, -7L)) 
data_xy %>% 
    group_by(x) %>% 
    summarise(y = paste(unique(y), collapse=";")) 

## x     y 
## 1 A text1;text2;text3 
## 2 B  text4;text5 
## 3 C    text6 

## OR 

data_xy %>% 
    group_by(x) %>% 
    summarise_each(funs(paste(unique(.), collapse=";"))) 

당신의 출력 B에 대한 text4의 하나 명의 발생을 보여주고 있기 때문에, unique 사용됩니다.