相关疑难解决方法(0)

过滤以在特定列中的特定值第一次出现之前删除所有行

我想在特定列中的特定值第一次出现之前过滤以删除所有行。例如,在下面的数据框中,我想删除第一次bob出现在列中之前的所有行a。请注意,bob第二次重复的值- 我只想在第一次bob出现之前删除行。

(dat<-data.frame(a= c("pete", "mike", "bob", "bart", "bob"), b=c(1,2,3,4,5), c=c("home", "away", "home", "away", "gone")))
     a b    c
1 pete 1 home
2 mike 2 away
3  bob 3 home
4 bart 4 away
5  bob 5 gone
Run Code Online (Sandbox Code Playgroud)

我希望生成的数据框如下所示:

   a   b  c
1 bob  3 home
2 bart 4 away
3 bob  5 gone
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
2
解决办法
230
查看次数

R:如何在保留其他列的同时聚合某些列

我有一个类似这里描述的问题,但没有一个我尝试过的解决方案.

给出这样的表:

Date    Exercise    Category    Weight  Reps    EstMax  RepxWeight  Note
4/2/16  Deadlift    Legs    135 7   166.4685    7x135   easy
4/2/16  Deadlift    Legs    135 7   166.4685    7x135   kinda easy
4/2/16  Deadlift    Legs    135 7   166.4685    7x135   tired
4/2/16  Bench Press Chest   95  5   110.8175    5x95    hard
4/2/16  Bench Press Chest   135 2   143.991 2x135   not hard
4/9/16  Bench Press Chest   135 2   143.991 2x135   a little hard
4/9/16  Bench Press Chest   135 2   143.991 2x135   super tired
4/18/16 Deadlift    Legs …
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
1
解决办法
5528
查看次数

查找列中特定值的最大值?

我有一个包含 34 列和 12,964 行的数据框,其中两列是 Gene.Name 和 Mutation_Frequency。例如:

基因名称 Mutation_Frequency
CTLA4 0
TP53 4
CTLA4 2
CTLA4 2
TP53 4
TP53 6

我现在想创建一个名为“Highest_Mutation_Frequency”的列,它告诉我 Gene.Name 的最高突变频率,并将其放在一个新列中,如下所示:

基因名称 Mutation_Frequency Highest_Mutation_Frequency
CTLA4 0 2
TP53 4 6
CTLA4 2 2
CTLA4 2 2
TP53 0 6
TP53 6 6

我意识到我可能可以使用 max() 命令,但我不确定如何实现它。与往常一样,任何帮助表示赞赏!

编辑:虽然这与另一个问题非常相似: 选择每组中具有最大值的行 这个问题还涉及生成唯一的行并将它们放置在另一个数据框中。

r max dataframe

2
推荐指数
2
解决办法
51
查看次数

基于两列删除重复项,在第三列保留具有较大值的一列,同时保持所有列完好无损

我有一个数据框如下:

x1    x2    x3    x4
X     A     B     4
Y     C     B     2
Z     A     C     1
X     C     B     5
Run Code Online (Sandbox Code Playgroud)

我想删除基于列 x2 和 x3 的值重复的行。x4 列中具有较大值的值将被保留。所以在这种情况下,结果将如下:

x1    x2    x3    x4
X     A     B     4
Z     A     C     1
X     C     B     5
Run Code Online (Sandbox Code Playgroud)

第二行被删除,因为对 (C, B) 出现了两次,第四行被保留,因为列 x4 上 5 > 2。

我有以下代码,似乎可以正确删除重复项,但不会将列 x1 保留在最终结果中:

result <- df%>%group_by(x2, x3)%>%summarise(x4=max(x4))

x2    x3    x4
A     B     4
A     C     1
C     B     5
Run Code Online (Sandbox Code Playgroud)

如何将所有列 x1 ... x4 保留在最终结果中?

r dataframe dplyr tidyverse

2
推荐指数
1
解决办法
1557
查看次数

如何根据条件删除R中的重复行?

我有以下数据:

df <- data.frame(id = c("001", "001", "001", "002", "002", "003", "003"),
                 x = c(0, 0, 0, 0, 1, 0, 1))

 id x
001 0
001 0
001 0
002 0
002 1
003 0
003 1
Run Code Online (Sandbox Code Playgroud)

数据的性质使得某些数据可能id只有行x = 0。对于x = 1给定的id,它只出现一次,并且也出现在该 的最后一行id。我想删除每个 的重复行id,但对于x = 1an id,我只想保留该行。

所需的输出:

 id x
001 0
002 1
003 1
Run Code Online (Sandbox Code Playgroud)

tidyverse优选解决方案。谢谢!

r dplyr data-cleaning tidyverse data-wrangling

1
推荐指数
1
解决办法
40
查看次数

根据中位数删除特定的重复行

我目前有一个数据框,看起来像这样:

        result 1    result 2    result 3    median 
item 1    8             7           6         7 
item 5    1             2           3         2 
item 1    6             5           4         5
item 5    3             4           5         4 
Run Code Online (Sandbox Code Playgroud)

我想根据中位数删除重复项,在其中我想将重复项保留为较高的中位数。问题在于行名(项目1等)不是它们自己的列,因此$操作无法访问。

我该怎么做?提前致谢。

r duplicates median dataframe

0
推荐指数
1
解决办法
53
查看次数

使用R找出组的最大值与当前行之间的差异

与此类似的问题在这里,我试图找到一个组的最大值和当前行的值之间的差异.

例如,如果我有以下数据集:

ID <- c(1,1,1,2,2,2,2,3,3)
Value <- c(2,3,5,2,5,8,17,3,5)
group <- data.frame(Subject=ID, pt=Value)
Run Code Online (Sandbox Code Playgroud)

我将如何创建一个名为"diff"的新列,它将是当前行的值与该组中的最大值之间的差异?

谢谢您的帮助!

r dplyr data.table tidyr

0
推荐指数
1
解决办法
115
查看次数

在组内获取最大日期的有效方法

我经常有数据集,我随着时间的推移有多个事件测量,我想在一个月内为每个事件采取最大日期.我这样做是通过创建年份和月份变量,然后按日期降序排序,然后是group_by除日期之外的所有变量,然后使用a slice来获取最大日期.我听到Hadely在视频中说这arrange是一个缓慢的操作.我想知道这样做的有效方法是在整齐的范围内.

请发布base,data.table,其他答案,以便其他用途可以从这个问题中受益,但我的愿望是一个整齐的方法.

我目前如何进行此操作:

library(tidyverse)

set.seed(10)
dat <- data_frame(
    date = sample(seq(as.Date('1999/01/01'), as.Date('2001/01/01'), by="day"), 1000, TRUE),
    cash = sample(1010:1030, 1000, TRUE),
    stage = sample(LETTERS[1:7], 1000, TRUE)
) %>% distinct()


dat %>%
    mutate(
        year = format(date, '%Y'),
        month = format(date, '%B')
    ) %>%
    arrange(desc(date)) %>%
    group_by(cash, stage, year, month) %>%
    slice(1)
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse

-1
推荐指数
1
解决办法
472
查看次数