r - 在R中从下到上提取相似的值
问题描述
我有一张如下表:
FDate<-data.table("Date"=seq(1:6),"Cycle"=c(90,100,130,150,170,200),"i.Task"=c(NA,NA,"D",NA,NA,"A"),"Task"=c("D","A","C","B",NA,NA))
Date Cycle i.Task Task
1: 1 90 <NA> D
2: 2 100 <NA> A
3: 3 130 D C
4: 4 150 <NA> B
5: 5 170 <NA> <NA>
6: 6 200 A <NA>
如何提取Task
对应的和最大的cycle
?输出看起来像这样
Cycle Task
1 130 C
2 130 D
3 150 B
4 200 A
解决方案
我们可以melt
变成'long'格式,然后按'Task'分组,得到max
'Cycle'的值
library(data.table)
melt(FDate, id.var = c("Date", "Cycle"), na.rm = TRUE, value.name = "Task")[,
.(Cycle = Cycle[which.max(Cycle)]), Task]
或类似的选项gather
fromtidyverse
library(tidyverse)
gather(FDate, key, Task, matches("Task"), na.rm = TRUE) %>%
group_by(Task) %>%
summarise(Cycle = max(Cycle)) %>%
select(Cycle, Task) %>%
arrange(Cycle)
# A tibble: 4 x 2
# Cycle Task
# <dbl> <chr>
#1 130 C
#2 130 D
#3 150 B
#4 200 A
推荐阅读
- python - 烧瓶登录 User.get(userid) 丢失
- python-3.x - 如何从python3中的另一个包中导入模块?
- android - addTextChangedListener 第二次无法正常工作-Android Kotlin Viewmodel
- android - 您所在的国家/地区不支持 Google Play 购买
- time-series - 使用 LSTM-Seq2seq 模型训练多个数据集
- npm - UnhandledPromiseRejectionWarning:错误:“版本”是必需的参数
- python - 如何在不使用替换函数或任何内置函数的情况下从 python 中的主字符串替换子字符串?
- python - 如何为 html 模板提供参数?
- python - 如何在 tkinter.ttk.Entry 中设置文本框等待输入模式
- reactjs - Threejs:MacOS 上的 videoTextures 问题