我如何进入一个表,他的值'x‘对应于'y’和'z‘的顶部k值?
> dt <- data.table( x = letters[c(1, 1, 3, 2, 3, 1, 1)],
y = c(1, 2, 1, 2, 2, 1, 1), z = c(1, 2, 3) )
> dt
x y z
1: a 1 1
2: a 2 2
3: c 1 3
4: b 2 1
5: c 2 2
6: a 1 3
7: a 1 1这种情况是否可以用一个联接来解决,或者我必须在不是“x”的列上循环?
> requested.output
var x Val
1: y a 2
2: y b 2
3: y c 2
4: z c 3
5: z a 3
6: z a 2发布于 2016-01-24 22:52:56
不需要循环或连接,只需根据x列转换为长格式,按value顺序排序,然后根据每个variable选择前3行。
melt(dt, id = "x")[order(-value), .SD[1:3], keyby = variable]
# variable x value
# 1: y a 2
# 2: y b 2
# 3: y c 2
# 4: z c 3
# 5: z a 3
# 6: z a 2https://stackoverflow.com/questions/34982359
复制相似问题