在数据框中分别计算多个变量,变量名称包含一个序列

劳尔

我有一个巨大的数据框,后面跟随着多个变量名。为简化起见,我创建了一个包含8个变量的示例,后5个变量遵循列名称中的顺序:I5min_thresh.118,I5min_thresh.118.5,I5min_thresh.119,I5min_thresh.119.5,I5min_thresh.120)。

变量名称中的序列只是一个示例,可以有所不同,例如,变量序列名称可以从60到180乘以0.1步(在此示例中从118到120乘以0.5步)。

可重现的数据帧:

df<-data.frame(Event=c("yes","yes","yes","no","no","no","no","no","no"),
           mois=c(0.3,0.2,0.2,0.3,0.3,0.3,0.3,0.3,0.2),
           I_float=c(96.0,100.8,96.0,21.6,10.8,10.8,16.8,8.4,16.8),
           Imax.118=c(95.0,105.0,77.0,15.0,5.0,49.7,53.8,51.2,57.8),
           Imax.118.5=c(97.0,90.0,100.0,16.0,15.0,50.2,54.3,51.7,58.3),
           Imax.119=c(98.0,110.0,78.0,51.4,8.0,50.7,54.8,52.2,58.8),
           Imax.119.5=c(99.8,71.0,80.0,51.9,51.2,51.2,55.3,52.7,59.3),
           Imax.120=c(54.6,71.5,79.0,52.4,51.7,51.7,55.8,53.2,59.8))

数据框的外观如下:

在此处输入图片说明

我想为每个Imax计数以下变量,并将其存储在新的数据框中:

  • 如果Event = yes,则I_float> = Imax的次数,作为变量TP。
  • 如果Event = yes,则I_float <Imax的次数,作为变量FN
  • 如果Event = no,则I_float> = Imax的次数,作为变量FP。
  • 如果Event = no,则I_float <Imax的次数,作为变量TN。

结果数据帧应如下所示,其中Yintercept等于Imax变量中包含的序列号:

在此处输入图片说明

现在,我仅设法为1个变量计算TP,FN,TN和FP,通过在r代码(Imax.118)中准确指出变量名称来说出变量Imax.118(上一示例的第一行)。我不能使用手动方法,因为在真实数据框中,按照名称顺序包含数百个变量。

任何帮助将不胜感激。

伦尼

使用gather我们可以把我们的数据长,只保留了数字和原来的点Imax列,然后按我们的Yintercept列和行总结其返还金额TRUE为指定的条件TPFNTNFP列。

library(tidyverse)
df %>% 
  gather(Yintercept, val, -Event, -mois, -I_float) %>% 
  mutate(Yintercept = as.numeric(gsub("Imax\\.", "", Yintercept))) %>% 
  group_by(Yintercept) %>% 
  summarise(TP = sum(I_float > val & Event == "yes"),
            FN = sum(I_float < val & Event == "yes"),
            TN = sum(I_float < val & Event == "no"),
            FP = sum(I_float > val & Event == "no"))

  Yintercept    TP    FN    TN    FP
       <dbl> <int> <int> <int> <int>
1       118      2     1     4     2
2       118.     1     2     5     1
3       119      1     2     5     1
4       120.     2     1     6     0
5       120      3     0     6     0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在数据框中使用现有变量名称创建一个新变量,在匹配每个变量列表中的非 NA 值时填充它

创建一个包含变量名称的列表

R-如何在数据框变量名称中包含符号/等式?

将时间序列数据框分解为一个具有多个变量的变量,每个变量都有年份的名称

如何将变量名称的数据框和另一个与回归数据匹配?

需要拆分一个包含不同数量的变量名称和观察值的双重连接数据的列

整理一个数据框,其中每一列包含多个变量

给定一个包含变量名称的字符串,在 python 中删除一个变量

创建一个宏变量来存储数据集的所有变量名称

使用来自另一个数据框的值作为R中的变量名称来对数据框进行变异

打开一个包含变量名的文件

设置一个变量名称为VBA的数组

R中的数据框变量名称

使用变量名来更改另一个变量名的名称

bash:创建一个包含另一个变量的变量名

在数据框中创建一个新变量,条件是另一个数据框

使用列表中的元素在数据框中指定变量名称

将变量折叠为一个具有保留变量名称的值的变量

在数据框中创建一个新变量并一步更改其值

向列表中的每个数据框添加一个与数据框名称相同的变量

如果数据框中包含来自另一个数据框中的任何元素,如何在数据框中分配类别?

通过组合两个变量名称创建一个jquery变量

根据其他两个变量在数据框中创建一个新变量

R:根据另一个变量在数据框中添加行

如何仅替换R中多个变量名称的最后一个字符?

R:如何在数据框中创建一个新列,从基数上计算观察值对变量具有相同值的次数

在数据框中,如何仅根据名称选择特定变量以进行进一步计算?

R:表的参数是一个包含变量名的变量,但不是这样解释的?

使用另一个变量递增变量名称