【发布时间】:2018-09-27 17:29:15
【问题描述】:
假设我们在 R 中有 2 个数据帧。
a = data.frame(col1 = round(runif(6,1,20)),col2 = c("a b c","b e z","a c q","a b","w","u o p l"), stringsAsFactors = F)
b = data.frame(col1 = 1:10, col2 = round(runif(10,1,10)), col3 = round(runif(10,10,20)), col4 = c(paste(letters[1:15], collapse=" "),paste(letters[10:25], collapse=" "),paste(letters[1:15], collapse=" "),paste(letters[1:19], collapse=" "),paste(letters[10:15], collapse=" "),paste(letters[1:15], collapse=" "),paste(letters[20:25], collapse=" "),paste(letters[1:15], collapse=" "),paste(letters[3:26], collapse=" "),paste(letters[1:2], collapse=" ")),stringsAsFactors = F)
数据集是:
a
col1 col2
15 a b c
8 b e z
11 a c q
15 a b
5 w
12 u o p l
b
col1 col2 col3 col4
1 1 10 a b c d e f g h i j k l m n o
2 2 12 j k l m n o p q r s t u v w x y
3 4 12 a b c d e f g h i j k l m n o
4 4 16 a b c d e f g h i j k l m n o p q r s
5 2 13 j k l m n o
6 3 15 a b c d e f g h i j k l m n o
7 1 12 t u v w x y
8 2 18 a b c d e f g h i j k l m n o
9 4 16 c d e f g h i j k l m n o p q r s t u v w x y z
10 3 12 a b
我想根据以下几点在数据框“a”中创建第三列 col3:
- a$col3 将包含来自数据帧“b”的 col1 的值的序列号列表。
- 将选择 b$col1 的值,其中 a$col1 位于每行的 b$col2 和 b$col3 值之间。
- 另外,a$col2 中的字母应该出现在 b$col4 中。 (不需要排序。例如,“a s”等价于“s a”。)
最终需要的数据集。
a
col1 col2 col3
15 a b c 4 6 8
8 b e z
11 a c q 4 9
15 a b 4 6 8
5 w 2 7 9
12 u o p l 2 9
请注意—— 由于我使用的数据框很大,因此 For-loops 解决方案将不起作用。 (有数百万行)。任何其他方法将不胜感激。
提前致谢。
【问题讨论】:
-
您的观点 1 中有一个令人困惑的错字。您所说的“slno.s”是什么意思?
-
@ngm 抱歉,我的意思是序列号。改变了。
标签: r loops dataframe dplyr compare