【发布时间】:2019-07-16 03:54:34
【问题描述】:
我正在尝试按 ID 组进行计算。想用dplyr,但不是必须的。在历史列中,我有一串数字(长度相同,36)。我想应用该规则,逐个元素地获取最大(最大值)值,并为每个 Id 获取一个新的单个历史记录。 例如,对于 ID = 1157,新的单个字符串将是 4324000000000000000000000000000000000,因为这些是该 ID 的每个元素的最大值。我想为所有 Id(数以千计)执行此操作。
Id history
1 1157 101000000000000000000000000000000000
2 1157 000000000000000000000000000000000000
3 1157 432100000000000000000000000000000000
4 1157 321000000000000000000000000000000000
5 1157 000400000000000000000000000000000000
6 1157 432100000000000000000000000000000000
7 1157 211000000000000000000000000000000000
26 1351 000000000000000000000000000000000000
27 1351 000000000000000000000000000000000000
45 1351 000000000000000000000000000000000000
46 1351 000000000000000000000000000000000000
47 1351 000000000000000000000000000000000000
48 1351 000000000000000000000000000000000000
49 1351 000000000000000000000000000000000000
50 1351 000000000000000000000000000000000000
51 1351 000000000000000000000000000000000000
52 1351 000000000000000000000000000000000000
53 1351 000000000000000000000000000000000000
54 1351 000000000000000000000000000000000000
55 1351 000000000000000000000000000000000000
【问题讨论】:
-
这不是每个组的最大值吗?
df %>% group_by(Id) %>% slice(which.max(as.numeric(history)))? -
这两个似乎回答了你的问题:- [1]stackoverflow.com/questions/24070714/… [1]: stackoverflow.com/questions/24558328/…
-
我需要逐个元素,而不是哪一行是最大的。这个例子有点欺骗性。
-
啊……我明白了。你能用一个更好的例子更新帖子,以便清楚区别吗?如果您能提供
dput的样本数据,也会很有帮助。 -
你的意思是
df %>% group_by(Id) %>% mutate(new_string = max(history))?这会将组中history列的最大值分配给每个Id元素