我试图在一个 Dataframe 中创建一个新的列,它基于另外三个列:父列、特定指示符列和组合的父特定指示符的值。
给出:
parent specific val
1 a x 10
2 a y 11
3 a z 12
4 b x 20
5 b y 21
6 b z 22
7 c x 30
8 c y 31
9 c z 32
我想创建一个新列,比如px_瓦尔(选择每个父列的x值),这样得到的 Dataframe 是:
parent specific val px_val
1 a x 10 10
2 a y 11 10
3 a z 12 10
4 b x 20 20
5 b y 21 20
6 b z 22 20
7 c x 30 30
8 c y 31 30
9 c z 32 30
测试df代码:
df <- data.frame(
parent=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'),
specific=c('x', 'y', 'z', 'x', 'y', 'z', 'x', 'y', 'z'),
val=c(10, 11, 12, 20, 21, 22, 30, 31, 32)
)
我想可能会迭代 Dataframe ,将给定父节点的x值存储在一个变量中,并将其分配给每个父节点。但我觉得应该有个更优雅的解决方案?
1条答案
按热度按时间vbopmzt11#
我们可以这样做:
px_val
将包含specific
等于x
的值,对于每个唯一父->val[specific == 'x']
.by=...
只对这个突变进行分组,好处是我们不需要在之后使用ungroup():