Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于相同df的另一个变量重写变量值_Python_R_Dataframe - Fatal编程技术网

Python 基于相同df的另一个变量重写变量值

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

假设我有一个数据帧,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 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美观、简洁、优雅。完美搭配。