2014-07-25 60 views
0

我正在尋找使用R來清理數據庫中的一些文本字符串。數據庫存儲完整的HTML標籤。不幸的是,由於數據庫的限制,每個字符串在數據庫中被分成多個片段。我想我可以弄清楚如何使用正則表達式和其他帖子的幫助去除html標籤,但我不希望這些解決方案能夠工作,除非我將這些片段連接在一起(打開/關閉html標籤可以跨越記錄在數據框中)。下面是一些示例數據:R - 從數據框連接字符串並刪除html標記

現有數據幀

Record_nbr fragment Comments 
1 1 "The quick brown" 
1 2 "fox jumped over" 
1 3 "the lazy dog." 
2 1 "New Record." 

希望的輸出數據幀

Record_nbr fragment Comments 
1 3 "The quick brown fox jumped over the lazy dog." 
2 2 "New Record." 

數據:

dat <- read.table(text='Record_nbr fragment Comments 
1 1 "The quick brown" 
1 2 "fox jumped over" 
1 3 "the lazy dog." 
2 1 "New Record."', header=TRUE) 

回答

0

好像fragment列在拆分後變得不可用?也許

> aggregate(dat[3], dat[1], paste) 
# Record_nbr            x 
# 1   1 The quick brown fox jumped over the lazy dog. 
# 2   2         New Record. 

相當於

aggregate(Comments~Record_nbr, data = dat, paste) 
+0

謝謝大家!這似乎是竅門 – rascale

+0

'grouped < - aggregate(dataframe [[12]],dataframe [1:9],paste,collapse =「」)' – rascale

+0

like'aggregate(dat [-1],dat [1] ,粘貼)'這個例子 –

0

這裏的許多方法中的一種:

## ensure order 
dat <- with(dat, dat[order(Record_nbr, fragment), ]) 

do.call(rbind, lapply(split(dat, dat$Record_nbr), function(x) { 
    data.frame(
     x[1, 1, drop=FALSE], 
     fragment = max(x[, 2]), 
     Comments = paste(x$Comments, collapse=" ") 
    ) 
})) 

## Record_nbr fragment          Comments 
## 1   1  3 The quick brown fox jumped over the lazy dog. 
## 2   2  1         New Record. 
0

使用dplyr

library(dplyr) 
dat %>% 
group_by(Record_nbr) %>% 
summarize(fragment= n(), Comments=paste(Comments, collapse= " ")) 

# Record_nbr fragment          Comments 
#1   1  3 The quick brown fox jumped over the lazy dog. 
#2   2  1         New Record. 
1

我假設你實際上並沒有想保持片段列。在這種情況下,你可以使用這個快速的一行:

aggregate(comment ~ Record_nbr, data=dat, function(x) paste(x, collapse=" ")) 
0

還要考慮使用更快的「聚合」功能:

aggregate(dat, by=list(dat$Record_nbr), paste, collapse=" ") 

## Group.1 Record_nbr fragment          Comments 
## 1  1  1 1 1 1 2 3 The quick brown fox jumped over the lazy dog. 
## 2  2   2  1         New Record. 

編輯:您可能必須與功能的輸入發揮得到確切的結果你想要的。