【发布时间】:2021-05-07 22:54:57
【问题描述】:
我有以下数据框:
a = sample(letters[1:10])
b = sample(1:1000000, 10)
c = sample(1:100000000, 10)
d = sample(letters[1:26], 10)
e = sample(1:1000000, 10)
f = sample(1:100000000, 10)
g = sample(letters[1:26], 10)
h = sample(1:1000000, 10)
i = sample(1:100000000, 10)
data = data.frame(a,b,c)
data2 = data.frame(d,e,f)
data3 = data.frame(g,h,i)
data
Col1 Col2 Col3
1 a 626275 52114901
2 j 26543 70683919
3 c 8953 284605
4 h 822415 35245405
5 f 595095 81093354
6 i 812429 71119567
7 g 100678 87776459
8 e 54772 9709717
9 d 19375 43611618
10 b 174711 7254034
data2
Col1 Col2 Col3
1 y 12495 78654339
2 p 423945 79628767
3 k 378461 36729002
4 x 795469 98196961
5 h 240119 71903172
6 v 691621 74276314
7 d 702074 64715230
8 n 718401 21247081
9 s 580166 52888162
10 b 194630 92287079
data3
Col1 Col2 Col3
1 m 391166 98761754
2 v 321615 71765127
3 g 959452 80114937
4 w 380126 25877104
5 f 655875 69610059
6 s 267364 7113484
7 h 391116 6801473
8 i 663616 73956544
9 o 936505 94244449
10 c 514173 82174024
我还有一个表,其中包含 Col1 列的所有内容(此表称为表 k。我想做的是编写一个函数,允许我通过以下方式对数据帧的内容进行子集化将Col1 和表k 中的所有项目识别为匹配项。
表 K:
k
Col1
1 a
2 j
3 c
4 h
5 f
6 i
7 g
8 e
9 d
10 b
11 y
12 p
13 k
14 x
15 h
16 v
17 d
18 n
19 s
20 b
21 m
22 v
23 g
24 w
25 f
26 s
27 h
28 i
29 o
30 c
然后我只想打印列 Col2 的内容作为函数的输出。由于我有多个数据框,我知道我必须将它们放在一个列表中,然后在创建函数后使用 lapply。我已经做到了这一点,但我的代码不起作用。
get_tair = function(df, col1, col2){
df[df[[col1]] %in% k$$Col1,]
print(df[[col2]])
}
任何帮助表示赞赏。谢谢。
【问题讨论】:
-
我以它为例。我使用的真实数据集在每个数据框中都缺少一些值,因此不会返回所有值。