R-根据条件向量的组数据并总结

  • 本文关键字:数据 条件 向量 r break cut
  • 更新时间 :
  • 英文 :


我不知道如何通过具有多种条件的列对数据进行分组。我想拥有一个灵活的滑块,该滑块设置了组的数量,并计算了行的总和,以便将其显示在Barplot中。这是我所做的,希望有人有一个主意:

我有这样的数据:

print(mydata)
Deviation   Fuel
-98893        10
-98032        20
-93958        30
-68953        40
-67829        50

等等等。

最后,它们将显示在一个小花上。现在,我想通过"偏差"对数据进行分组。使用库(闪亮(,我做了一个滑块来定义组的数量。

> input
[1] 4

so"输入"给出了MyData必须由4组分组的信息。然后,我需要"偏差"的范围才能应用这些组,然后我可以计算每个组的范围:

ABWGES <- -min(mydata$Deviation)+max(mydata$Deviation)
STEP <- round(ABWGES/input)
print(STEP)
[1] 24923

我尝试了许多不同的方法来执行接下来的几个步骤,但是我无法获得我喜欢的结果。如果我将小组的数量设置为4,则需要创建4个组。我为括号中的每个组设置了一个名称,以向您展示我的结果,但是我希望可以将将为刹车生成的矢量的组命名:

(1)-98893 to -73970
(2)-73969 to -49046
(3)-49045 to -24122
(4)-24121 to 802
Deviation   Fuel    group
    -98893        10    1
    -98032        20    1
    -93958        30    1
    -68953        40    2
    -67829        50    2
    -63738        60    2
    -60031        70    2
    -55063        80    2
    -54864        90    2
    -53042       100    2
    -52000       110    2
    -51000       120    2
       500       130    4
       800       140    4

您看到的是,一组缺少,因为没有数字满足组3的要求。应该是这样的:

Deviation   Fuel    group
    -98893        10    1
    -98032        20    1
    -93958        30    1
    -68953        40    2
    -67829        50    2
    -63738        60    2
    -60031        70    2
    -55063        80    2
    -54864        90    2
    -53042       100    2
    -52000       110    2
    -51000       120    2
         0         0    3
       500       130    4
       800       140    4

我想为大量数据执行此过程,所以有人对如何执行此操作有任何想法吗?P.S.我尝试使用setDT将数据切成组。

我们可以使用tidyr中的complete获取丢失的组合

library(tidyverse)
df1 %>% 
   complete(group = full_seq(group, 1), fill = list(Deviation = 0, Fuel = 0))  
# A tibble: 15 x 3
#   group Deviation  Fuel
#   <dbl>     <dbl> <dbl>
# 1     1    -98893    10
# 2     1    -98032    20
# 3     1    -93958    30
# 4     2    -68953    40
# 5     2    -67829    50
# 6     2    -63738    60
# 7     2    -60031    70
# 8     2    -55063    80
# 9     2    -54864    90
#10     2    -53042   100
#11     2    -52000   110
#12     2    -51000   120
#13     3         0     0
#14     4       500   130
#15     4       800   140

数据

df1 <- structure(list(Deviation = c(-98893L, -98032L, -93958L, -68953L, 
-67829L, -63738L, -60031L, -55063L, -54864L, -53042L, -52000L, 
 -51000L, 500L, 800L), Fuel = c(10L, 20L, 30L, 40L, 50L, 60L, 
70L, 80L, 90L, 100L, 110L, 120L, 130L, 140L), group = c(1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L)), .Names = c("Deviation", 
"Fuel", "group"), class = "data.frame", row.names = c(NA, -14L
 ))

最新更新