Python 基于相同df的另一个变量重写变量值
假设我有一个数据帧,df。 此df有3列:名称、D和R 现在,R已为每个名称填充了一个常量值,但仅与D的最大值相对应。 问题是情况并非如此:变量R实际上取决于D的值,正如我所说的,R的现有值仅适用于每个名称的最大D数 我想根据每个名称的D值来减小R的值。更准确地说,每次D减少-200(这是mts,但并不重要),R必须减少-0.1。这种功能关系适用于每个名称:根据名称,唯一相关的事实是每个名称都有自己的R的“起点”Python 基于相同df的另一个变量重写变量值,python,r,dataframe,Python,R,Dataframe,假设我有一个数据帧,df。 此df有3列:名称、D和R 现在,R已为每个名称填充了一个常量值,但仅与D的最大值相对应。 问题是情况并非如此:变量R实际上取决于D的值,正如我所说的,R的现有值仅适用于每个名称的最大D数 我想根据每个名称的D值来减小R的值。更准确地说,每次D减少-200(这是mts,但并不重要),R必须减少-0.1。这种功能关系适用于每个名称:根据名称,唯一相关的事实是每个名称都有自己的R的“起点” 名称D R 1组1 3290 1.4 2组2 3129 1.6 3组1 2920
名称D R
1组1 3290 1.4
2组2 3129 1.6
3组1 2920 1.4
4组4 1100 1.9
5第1组3500 1.4
6组1 3323 1.4
...
正如您所看到的,每个组的R值都是恒定的,即使D在变化。假设3500是Group1的最高值。然后,我会期待类似于:
名称D R
1组1 3290 1.3
2组2 3129 1.6
3组1 2920 1.2
4组4 1100 1.9
5第1组3500 1.4
6组1 3323 1.4
...
我已经为此编写了一个解决方案:
库(dplyr)
df%变异(R=发生变异时的情况)(
(名称==“Group1”&D>=3500-100)~1.4
(name==“Group1”&D我认为使用dplyr
,您可以
library(dplyr)
df %>% group_by(Names) %>% mutate(R1 = R - (0.1 * floor((max(D) - D)/200)))
# Names D R R1
# <fct> <int> <dbl> <dbl>
#1 Group1 3290 1.4 1.30
#2 Group2 3129 1.6 1.6
#3 Group1 2920 1.4 1.2
#4 Group4 1100 1.9 1.9
#5 Group1 3500 1.4 1.4
#6 Group1 3323 1.4 1.4
库(dplyr)
df%>%分组依据(名称)%>%变异(R1=R-(0.1*楼层((最大(D)-D)/200)))
#名称D R R1
#
#1组1 3290 1.4 1.30
#2组2 3129 1.6 1.6
#3组1 2920 1.4 1.2
#4组4 1100 1.9 1.9
#5第1组3500 1.4 1.4
#6组1 3323 1.4 1.4
以R为底的是哪个
df$R1 <- with(df, R - (0.1 * floor((ave(D, Names, FUN = max) - D)/200)))
df$R1美观、简洁、优雅。完美搭配。