Redian新闻
>
如何合并两个数据文件 (转载)
avatar
如何合并两个数据文件 (转载)# DataSciences - 数据科学
E*m
1
基督徒(不限板上或華人)有些絕招非常厲害,特開此主題
讓大家列出比較厲害的招式。
先開個頭
(一) 白布裡的每個字在每次用的時候都有不同的意思,尤其是
跟日常生活用法不同。 舉例:天,地,日,神,愛,忌妒。
(二)這個問題你要等(耶酥回來/審判時)再問耶酥/上帝/聖靈。
(三)我相信一定是怎樣怎樣的,聖經為什麼這麼說不知道 (由此接(二))
(四)不管問的是多簡單的 yes or no 問題,先把整個教義講一次,從耶酥
復活講到自己為什麼信主,再到多少人都信主, 就是不回答問題,你再問
一次,他就開始告訴你他以前也不信,現在信得很快樂,但是還是不回答問題。
avatar
w*1
2
【 以下文字转载自 Unix 讨论区 】
发信人: wz99331 (dotti), 信区: Unix
标 题: 如何合并两个数据文件
发信站: BBS 未名空间站 (Mon Mar 24 15:53:39 2014, 美东)
我有两个数据文件,第一个有3000多行(每行代表一个人的家庭情况),第二个有
1800多行,每行代表一个人的其他情况。现在想把两个文件合并起来,第2个文件
里的人都包含在第1个文件里面。合并后的人数和第1个文件一样,有1200人的其
他情况没有数据,就视为缺省值。由于数据非常大,第一行也没有变量名,所以没法用
SAS和R。请问UNIX有没有可以这样合并的命令?谢谢!
avatar
e*a
3
你用了你的quota啊
最重要的就是没逻辑,不区分facts和claims,还有就是不承认beyond reasonable
doubt
另外用一些莫能两可的词(以便慢慢解释)和句子

【在 E*****m 的大作中提到】
: 基督徒(不限板上或華人)有些絕招非常厲害,特開此主題
: 讓大家列出比較厲害的招式。
: 先開個頭
: (一) 白布裡的每個字在每次用的時候都有不同的意思,尤其是
: 跟日常生活用法不同。 舉例:天,地,日,神,愛,忌妒。
: (二)這個問題你要等(耶酥回來/審判時)再問耶酥/上帝/聖靈。
: (三)我相信一定是怎樣怎樣的,聖經為什麼這麼說不知道 (由此接(二))
: (四)不管問的是多簡單的 yes or no 問題,先把整個教義講一次,從耶酥
: 復活講到自己為什麼信主,再到多少人都信主, 就是不回答問題,你再問
: 一次,他就開始告訴你他以前也不信,現在信得很快樂,但是還是不回答問題。

avatar
b*n
4
creat a name variable as key, then use first left join second on a.name = b.
name

【 以下文字转载自 Unix 讨论区 】
发信人: wz99331 (dotti), 信区: Unix
标 题: 如何合并两个数据文件
发信站: BBS 未名空间站 (Mon Mar 24 15:53:39 2014, 美东)
我有两个数据文件,第一个有3000多行(每行代表一个人的家庭情况),第二个有
1800多行,每行代表一个人的其他情况。现在想把两个文件合并起来,第2个文件
里的人都包含在第1个文件里面。合并后的人数和第1个文件一样,有1200人的其
他情况没有数据,就视为缺省值。由于数据非常大,第一行也没有变量名,所以没法用
SAS和R。请问UNIX有没有可以这样合并的命令?谢谢!

【在 w*****1 的大作中提到】
: 【 以下文字转载自 Unix 讨论区 】
: 发信人: wz99331 (dotti), 信区: Unix
: 标 题: 如何合并两个数据文件
: 发信站: BBS 未名空间站 (Mon Mar 24 15:53:39 2014, 美东)
: 我有两个数据文件,第一个有3000多行(每行代表一个人的家庭情况),第二个有
: 1800多行,每行代表一个人的其他情况。现在想把两个文件合并起来,第2个文件
: 里的人都包含在第1个文件里面。合并后的人数和第1个文件一样,有1200人的其
: 他情况没有数据,就视为缺省值。由于数据非常大,第一行也没有变量名,所以没法用
: SAS和R。请问UNIX有没有可以这样合并的命令?谢谢!

avatar
e*a
5
tag是干什么的来着。。。
是不是版规1332来着
avatar
w*1
6
1800多行的数据有非常非常多列,有几万列,是GWAS的GENOTYPE DATA.如何给每一
列加上变量名啊。
avatar
E*m
7

板規應該是中文的,直接看就可能會明白。
avatar
w*1
8
你是说,只要给其中一列加上变量名,其他列不需要变量名也可以吗?
avatar
j*z
9
真神白白浪费一个标签,哈哈哈。。。
一个不太厉害的招式,而且经常backfire.
把神和人的一些互动关系,反问为人和人的互动关系。
好像完全忘却了人作为人,根本不可能跟神相提并论。
很多神能够或应该做的事,放到人的身上就是胡扯了。
avatar
M*Q
10
OP的文件估计是两个文本文件,csv之类的?load进database,然后按照
楼上的办法就可以了。另外,3000行的数据读入到Python, R里面应该也
没有问题的(不知道有多少column)。至于shell下面的工具,我就不知道了……

b.

【在 b*********n 的大作中提到】
: creat a name variable as key, then use first left join second on a.name = b.
: name
:
: 【 以下文字转载自 Unix 讨论区 】
: 发信人: wz99331 (dotti), 信区: Unix
: 标 题: 如何合并两个数据文件
: 发信站: BBS 未名空间站 (Mon Mar 24 15:53:39 2014, 美东)
: 我有两个数据文件,第一个有3000多行(每行代表一个人的家庭情况),第二个有
: 1800多行,每行代表一个人的其他情况。现在想把两个文件合并起来,第2个文件
: 里的人都包含在第1个文件里面。合并后的人数和第1个文件一样,有1200人的其

avatar
E*m
11
一周一次, 不用也浪費。

【在 j********z 的大作中提到】
: 真神白白浪费一个标签,哈哈哈。。。
: 一个不太厉害的招式,而且经常backfire.
: 把神和人的一些互动关系,反问为人和人的互动关系。
: 好像完全忘却了人作为人,根本不可能跟神相提并论。
: 很多神能够或应该做的事,放到人的身上就是胡扯了。

avatar
g*o
12
我表示我以前用excel+vba处理过六十几万行的lemma表...

【在 w*****1 的大作中提到】
: 【 以下文字转载自 Unix 讨论区 】
: 发信人: wz99331 (dotti), 信区: Unix
: 标 题: 如何合并两个数据文件
: 发信站: BBS 未名空间站 (Mon Mar 24 15:53:39 2014, 美东)
: 我有两个数据文件,第一个有3000多行(每行代表一个人的家庭情况),第二个有
: 1800多行,每行代表一个人的其他情况。现在想把两个文件合并起来,第2个文件
: 里的人都包含在第1个文件里面。合并后的人数和第1个文件一样,有1200人的其
: 他情况没有数据,就视为缺省值。由于数据非常大,第一行也没有变量名,所以没法用
: SAS和R。请问UNIX有没有可以这样合并的命令?谢谢!

avatar
E*m
13
任何明顯有問題的章節, 基們會翻出其他章節來否定這章節,
其實否定不了, 還證明了白布是自相矛盾的。
avatar
w*1
14
有几万列,太大了,尝试过用r一直读不完。是txt文件。

【在 M*Q 的大作中提到】
: OP的文件估计是两个文本文件,csv之类的?load进database,然后按照
: 楼上的办法就可以了。另外,3000行的数据读入到Python, R里面应该也
: 没有问题的(不知道有多少column)。至于shell下面的工具,我就不知道了……
:
: b.

avatar
j*z
15

还有一招很搞笑。
无知人类抄写翻译的错误。
可是转个头又说翻译都是圣灵指引和审批通过的。

【在 E*****m 的大作中提到】
: 任何明顯有問題的章節, 基們會翻出其他章節來否定這章節,
: 其實否定不了, 還證明了白布是自相矛盾的。

avatar
w*1
16
我试过用excel打开,但是说列太多了,打开不完整。

【在 g*****o 的大作中提到】
: 我表示我以前用excel+vba处理过六十几万行的lemma表...
avatar
E*m
17

還有天外冒出個 0.1% 不同的說法。

【在 j********z 的大作中提到】
:
: 还有一招很搞笑。
: 无知人类抄写翻译的错误。
: 可是转个头又说翻译都是圣灵指引和审批通过的。

avatar
d*n
18
有key就简单。每行当作(key,value), value就是那剩下几万列。
不过宽表join对于缺失数据空间浪费太大,遇到key不是1-1的更麻烦。

【在 w*****1 的大作中提到】
: 有几万列,太大了,尝试过用r一直读不完。是txt文件。
avatar
a*7
19
神、忌妒都有什么用法?

【在 E*****m 的大作中提到】
: 基督徒(不限板上或華人)有些絕招非常厲害,特開此主題
: 讓大家列出比較厲害的招式。
: 先開個頭
: (一) 白布裡的每個字在每次用的時候都有不同的意思,尤其是
: 跟日常生活用法不同。 舉例:天,地,日,神,愛,忌妒。
: (二)這個問題你要等(耶酥回來/審判時)再問耶酥/上帝/聖靈。
: (三)我相信一定是怎樣怎樣的,聖經為什麼這麼說不知道 (由此接(二))
: (四)不管問的是多簡單的 yes or no 問題,先把整個教義講一次,從耶酥
: 復活講到自己為什麼信主,再到多少人都信主, 就是不回答問題,你再問
: 一次,他就開始告訴你他以前也不信,現在信得很快樂,但是還是不回答問題。

avatar
l*o
20
java. HashMap
avatar
m*u
21
首先要知道数据以何种format存在,
然后用bcp, bulk insert,import, SSIS把数据load到SQL Server
或者用sqlldr , bulk insert把数据Load 到oracle 数据库
根据需要看是否需要做数据清理。
之后就用 left table join 即可达成目的。
avatar
g*o
22
可能你表格太稠密了..

【在 w*****1 的大作中提到】
: 我试过用excel打开,但是说列太多了,打开不完整。
avatar
g*l
23
一行perl 搞定。。。

【在 w*****1 的大作中提到】
: 我试过用excel打开,但是说列太多了,打开不完整。
avatar
w*1
24
我用了perl了,先用小点的数据文件可以合并起来,但是真正用大数据文件作为输入文
件的时候又不行了。你的一行perl能写出来给我看看吗?谢谢!
avatar
w*1
25
我想把这两个文件合并起来。gtriple.txt有3000多行,gws只有1800多行,我
希望合并以后和gtriple一样多行,而且他们的合并以两个文件的第一列(ID)为匹配,
合并好以后的缺省值(missing data)用0表示。我用这样的命令结果不对,出来的有
4000多列,大家能否帮我看看怎么回事?谢谢!
join -a1 -e "0" gtriple.txt gws.txt > gws.ped
avatar
p*o
26
join won't replace missing fields with zero in the second file. maybe you
can
insert these missing records with zeros in gws.txt, then gstriple and gws
will
match line by line.
not sure why you end up with more lines, you can check whether the
keys are unique in your second file...

【在 w*****1 的大作中提到】
: 我想把这两个文件合并起来。gtriple.txt有3000多行,gws只有1800多行,我
: 希望合并以后和gtriple一样多行,而且他们的合并以两个文件的第一列(ID)为匹配,
: 合并好以后的缺省值(missing data)用0表示。我用这样的命令结果不对,出来的有
: 4000多列,大家能否帮我看看怎么回事?谢谢!
: join -a1 -e "0" gtriple.txt gws.txt > gws.ped

avatar
i*e
27
GWAS的东西你应该看看PLINK和GTOOL先
再说有必要把genotype 和 sample/phenotype合并在一个单独文件吗

【在 w*****1 的大作中提到】
: 1800多行的数据有非常非常多列,有几万列,是GWAS的GENOTYPE DATA.如何给每一
: 列加上变量名啊。

avatar
w*1
28
我需要用merlin来做gwas。不能用plink做,因为需要考虑家庭因素。plink家庭因素方
面做的不好。merlin要把genotype 和 sample/phenotype合并在一个单独文件
avatar
w*1
29
gws.txt本身只有1834行,只有和gtriple合并了以后才出现missing fields.
这样就没法直接在gws文件里先加0啊。

【在 p****o 的大作中提到】
: join won't replace missing fields with zero in the second file. maybe you
: can
: insert these missing records with zeros in gws.txt, then gstriple and gws
: will
: match line by line.
: not sure why you end up with more lines, you can check whether the
: keys are unique in your second file...

avatar
d*y
30
楼主你的unix命令应该对的。你两个文件都sort了么?而且应该是sort by ID column
only. 两个文件的key都是unique的么
?而且你的命令缺省了delimiter,所以两个文件的delimiter都是space么?join 命令
default的delimiter是space, 不是tab。
结果你说有4000多列,所以missing了几万列的data?
avatar
i*e
31
嗯,那么你也不会想用SNPTEST了
你那个命令貌似没问题,事先有sort过对吧,而且你两个文件应该都是tab-delim的?

【在 w*****1 的大作中提到】
: 我需要用merlin来做gwas。不能用plink做,因为需要考虑家庭因素。plink家庭因素方
: 面做的不好。merlin要把genotype 和 sample/phenotype合并在一个单独文件

avatar
w*1
32
两个文件都sort了, 两个文件的key都是unique.现在的问题就是合并后missing data不
能用0补上。下面的列子说了如何用0补上,但是我用了还是不成功
http://www.albany.edu/~ig4895/join.htm
可以用这个命令:
join -a1 -a2 -1 2 -2 2 -o 0 1.1 2.1 -e "0" 1.txt 2.txt
下面这两句话不知道是什么意思:
A "0" (that.s a zero) means display the join field
A number in the format of X.Y means to display the Y field from the X file (
ex 2.1 means display the first field from the second file).
avatar
w*1
33
一个是space delim, 另外一个不知道是什么delim的,没办法用excel 打开。当初用
cut的时候用了space.

【在 i*e 的大作中提到】
: 嗯,那么你也不会想用SNPTEST了
: 你那个命令貌似没问题,事先有sort过对吧,而且你两个文件应该都是tab-delim的?

avatar
d*y
34
我想起来了。要用-e option必须和 -o option一起用。-o 是unix如何print output。
但是你有几万列的话,这个方法不适用。
0 是指 你的key
1.1 是file1的第一列
2.1 是file2的第一列。
你这个几万列的数据必须用迂回的办法。
avatar
w*1
35
怎么迂回啊?在线等



【在 d*******y 的大作中提到】
: 我想起来了。要用-e option必须和 -o option一起用。-o 是unix如何print output。
: 但是你有几万列的话,这个方法不适用。
: 0 是指 你的key
: 1.1 是file1的第一列
: 2.1 是file2的第一列。
: 你这个几万列的数据必须用迂回的办法。

avatar
d*y
36
这是我做的test。
test1
1|2|3
2|3|4
3|2|5
test2
1|a|f
2|b|g
join test1 and test2 using regular left outer join.
join -t"|" -a1 test1 test2 > test3
now, process test3
awk -F"|" 'BEGIN{for(i=1;i<=2;i++) testvar=testvar"|0"}NF<5 {print $0testvar;
next}{print $0}' test3 > test4
注意事项:
1.我的例子用的是pipe做为delimiter,习惯.
2.希望for loop要多长看你的两个文件column 差多少。
试试吧。不过几万列,不知道你的awk版本给不给力。如果不行试试gawk。
avatar
w*1
37
如果我还是用space delimiter,就是要改成:
join -t" " -a1 test1 test2 > test3
awk -F" " 'BEGIN{for(i=1;i<=2;i++) testvar=testvar"|0"}NF<5 {print $
0testvar;
next}{print $0}' test3 > test4
是吗?谢谢!
avatar
i*e
38
i<=2和NF<5要相应改一下

【在 w*****1 的大作中提到】
: 如果我还是用space delimiter,就是要改成:
: join -t" " -a1 test1 test2 > test3
: awk -F" " 'BEGIN{for(i=1;i<=2;i++) testvar=testvar"|0"}NF<5 {print $
: 0testvar;
: next}{print $0}' test3 > test4
: 是吗?谢谢!

avatar
w*1
39
testvar=testvar"|0"}
如果是用space delimiter的话,0前面的|是不是要去掉
avatar
w*1
40
NF<5 是什么意思
avatar
i*e
41
是的 testvar=testvar" 0"

【在 w*****1 的大作中提到】
: NF<5 是什么意思
avatar
i*e
42
awk中NF意思是记录的域的个数,换句话说就是你用分隔符划分后的column的个数
test1和test2合并之后的test3有5列
NF<5指的就是那些需要补充后续0的行
i<=2是说循环2次,因为test1有3列,test3有5列,相差2列

【在 w*****1 的大作中提到】
: NF<5 是什么意思
avatar
w*1
43
2.希望for loop要多长看你的两个文件column 差多少。
这个的意思是第一个文件和合并以后的文件column差多少,for loop就是多长对吧。
avatar
w*1
44
我用了这个命令,结果所有加上去的0都和第一个文件的最后一列粘在一起,看了一下
列数,产生后的gpt4.txt需要补0的行还是只有5列。
awk 'BEGIN{for(i=1;i<=1636908;i++) testvar=testvar"0"}NF<1636913 {print $
0testvar;next}{print $0}' gpt2.txt > gpt4.txt
avatar
i*e
45
如果你分隔符是空格,testvar=testvar"0" 0前面要加一个空格

【在 w*****1 的大作中提到】
: 我用了这个命令,结果所有加上去的0都和第一个文件的最后一列粘在一起,看了一下
: 列数,产生后的gpt4.txt需要补0的行还是只有5列。
: awk 'BEGIN{for(i=1;i<=1636908;i++) testvar=testvar"0"}NF<1636913 {print $
: 0testvar;next}{print $0}' gpt2.txt > gpt4.txt

avatar
w*1
46
对,我刚刚发现了,现在已经解决了。
avatar
o*n
47
看到你已经解决了,还是想问下:没有变量名,为啥不能用R做?导进去,我记得如果
它们里面有内容相同,R可以match两个文本的,好像the art of r programming里就有
类似的例子。
avatar
w*1
50
R 是可以做的,但是有个数据文件有5个G,读很久都读不进去。

【在 o******n 的大作中提到】
: 看到你已经解决了,还是想问下:没有变量名,为啥不能用R做?导进去,我记得如果
: 它们里面有内容相同,R可以match两个文本的,好像the art of r programming里就有
: 类似的例子。

avatar
h*d
51
编写一个C语言程序吧

【在 w*****1 的大作中提到】
: 有几万列,太大了,尝试过用r一直读不完。是txt文件。
avatar
O*O
52
硬件不行吧,那就不要把整个文件读进内存。可以用R,Python分段读取。
俺现在主要用R,几十GB的文件很常见,没啥问题。

[发表自未名空间手机版 - m.mitbbs.com]

【在 w*****1 的大作中提到】
: R 是可以做的,但是有个数据文件有5个G,读很久都读不进去。
avatar
l*s
53
用个什么java或者python啥的,每一行创建一个hash,然后就是两个ListString,String>>()合并
avatar
a*e
54
用 perl 很简单的
建一个 %flag
建一个 %temp
(1) 先打开file2, 按行读入,用第一列做标记, 赋值为 1 ($flag{$1} =1), 并且把整
行赋值到 $temp{$1} = $line
(2) 再打开file1, 按行读入,先检验第一列的标记是否为 1 ($flag{$1} ==1),
如果不是,把file1的 行写到新文件file3;
如果标记是 1, 把file1的 行写到新文件file3, 把$temp{$1}夜写到这一行里 。

【在 w*****1 的大作中提到】
: R 是可以做的,但是有个数据文件有5个G,读很久都读不进去。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。