我有这样的df:
x <- data.frame("Year" = c(1945,1945,1946,1946,1947,1947), "Age" = c(1,2,1,2,1,2), "Value" = c(4,5,4,5,4,6))
我想根据某些条件添加新行:例如,我想添加与第一行具有相同的“ YEAR”和“ AGE”的第二行,但是Value是第一行的最小值1。
我想要这样的结果:
x <- data.frame("Year" = c(1945, 1945,1945,1945,1946,1946,1946,1946,1947,1947,1947,1947), "Age" = c(1,1,2,2,1,1,2,2,1,1,2,2), "Value" = c(4,3,5,4,4,3,5,4,4,3,5,4))
感谢您对初学者的帮助。
在中base
,您可以将每一行重复两次,并添加0:-1
到中Value
。
within(x[rep(1:nrow(x), each = 2), ], Value <- Value + 0:-1)
它的tidyverse
版本是
library(tidyverse)
x %>%
uncount(2) %>%
mutate(Value = Value + 0:-1)
他们两个都给出以下内容。输出已正确排序,因此您无需使用order()
或arrange()
。
Year Age Value
1 1945 1 4
2 1945 1 3
3 1945 2 5
4 1945 2 4
5 1946 1 4
6 1946 1 3
7 1946 2 5
8 1946 2 4
9 1947 1 4
10 1947 1 3
11 1947 2 6
12 1947 2 5
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句