Re: [問題] 多個檔案合併 取聯集
這邊我是用"reshape"這個套件做的
file_1 <- data.frame(name=c("A","B","D"),value=c(23,45,100),day="day1")
file_2 <- data.frame(name=c("A","C","D"),value=c(77,11,35),day="day2")
file_3 <- data.frame(name=c("B","D","E"),value=c(11,44,55),day="day3")
#首先我們需要重新整理一下資料型態,把資料變成
#file_1
#name  value day
#A     23    day1
#B     45    day1
#D     100   day1
#這樣的形態
x <- rbind(file_1,file_2,file_3)
#再來把三個資料合在一起
        name    day1    day
1       A       23      day1
2       B       45      day1
3       D       100     day1
4       A       77      day2
5       C       11      day2
6       D       35      day2
7       B       11      day3
8       D       44      day3
9       E       55      day3
library("reshape")
呼叫reshape套件
result<- cast(x,name~day,value=c("value"))
#之後轉置DATA
#結果變這樣
        name    day1    day2    day3
1       A       23      77      NA
2       B       45      NA      11
3       D       100     35      44
4       C       NA      11      NA
5       E       NA      NA      55
應該也算符合您的需求吧 ?
※ 引述《celestialgod (攸藍)》之銘言:
: 大概寫了一下,長這樣,哪裏有問題,請務必告知我,謝謝
: 其他大大或是有更好的方法,我用比較笨的方法硬幹QQ
: working_path = "the directory of your file"
: setwd(working_path)
: file_list = dir()[grepl("txt", dir())]
: dat_list = lapply(1:length(file_list), function(l){
:     dat = read.table(l, header = TRUE)
:     dat = data.frame(cate = row.names(dat), dat)
:     dat
: })
: output_table = merge(dat_list[[1]], dat_list[[2]], by = "cate", all = TRUE)
: if(length(dat_list) >= 3)
: {
:     for (i in 3:length(dat_list))
:          output_table = merge(temp, dat_list[[i]], by = "cate", all = TRUE)
: }
: output_table[which(is.na(output_table))] = 0
: ※ 引述《iterate (碎形)》之銘言:
: : ctrl + y 可以刪除一整行,請將不需要的內容刪除
: : 文章分類提示:
: : - 問題: 多個檔案合併時,取聯集。範例如下。
: : [問題類型]:
: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: : [軟體熟悉度]:
: : 請把以下不需要的部份刪除
: : 入門(寫過其他程式,只是對語法不熟悉)
: : [問題敘述]:
: : 請簡略描述你所要做的事情,或是這個程式的目的
: : file_1:
: :    day1
: : A   23
: : B   45
: : D  100
: : file_2:
: :    day2
: : A   77
: : C   11
: : D   35
: : file_3:
: :    day3
: : B   11
: : D   44
: : E   55
: : 希望能合併成下表:
: :     day1    day2    day3
: : A    23      77       0
: : B    45       0      11
: : C     0      11       0
: : D   100      35      44
: : E     0       0      55
: : [程式範例]: 無
: [關鍵字]: merge, dir, grepl
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.218.97
※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1404924954.A.CA5.html
→
07/10 10:20, , 1F
07/10 10:20, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 6 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章