我想在特定列中的特定值第一次出现之前过滤以删除所有行。例如,在下面的数据框中,我想删除第一次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) 我有一个类似这里描述的问题,但没有一个我尝试过的解决方案.
给出这样的表:
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) 我有一个包含 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() 命令,但我不确定如何实现它。与往常一样,任何帮助表示赞赏!
编辑:虽然这与另一个问题非常相似: 选择每组中具有最大值的行 这个问题还涉及生成唯一的行并将它们放置在另一个数据框中。
我有一个数据框如下:
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 保留在最终结果中?
我有以下数据:
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优选解决方案。谢谢!
我目前有一个数据框,看起来像这样:
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等)不是它们自己的列,因此$操作无法访问。
我该怎么做?提前致谢。
与此类似的问题在这里,我试图找到一个组的最大值和当前行的值之间的差异.
例如,如果我有以下数据集:
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"的新列,它将是当前行的值与该组中的最大值之间的差异?
谢谢您的帮助!
我经常有数据集,我随着时间的推移有多个事件测量,我想在一个月内为每个事件采取最大日期.我这样做是通过创建年份和月份变量,然后按日期降序排序,然后是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)