r - 如何按类别将多行数据转换为单行数据?
问题描述
我需要帮助解决这个问题。
当前数据:
File Compound Height
B21990_COPLT_210520 Aggricin 19760
B21990_COPLT_210520 Ferrioxamine 5064
B21990_COPLT_210520 Betacin 101000
BA6650_CA2LT_210520 Metamin 6640
BA6650_CA2LT_210520 Surfactin 623600
BA6650_CA2LT_210520 Alanine 6460
所需文件:
File High Med Low
B21990_COPLT_210520 Betacin Aggricin Ferrioxamine
BA6650_CA2LT_210520 Surfactin NA Metain,Alanine
我有大约 100-200 行数据,需要通过它们的高度将它们分类为“高”、“中”和“低”(高:峰高 > 60 000;中:> 15 000 但 > 70 000;低: < 15 000)。除此之外,我还需要将文件放在一行中。
这是我当前的代码:
SourceFP <- read.csv("SourceFP.csv",header=TRUE)
SourceFP %>% mutate(Category = case_when(Height>60000~'High',
Height>15000~'Med',
TRUE~'Low')) %>% spread(Category,Name)
不幸的是,当我稍后选择文件时,我无法将文件合并为一行,它们显示为多行:
例如
File High Med Low
B21990_COPLT_210520 NA Aggricin NA
B21990_COPLT_210520 NA NA Ferrioxamine
B21990_COPLT_210520 Betacin NA NA
BA6650_CA2LT_210520 NA NA Metamin
BA6650_CA2LT_210520 Surfactin NA NA
BA6650_CA2LT_210520 NA NA Alanine
解决方案
用于重塑数据的data.table
选项dcast
dcast(
setDT(SourceFP)[
,
Category := c("Low", "Med", "High")[as.integer(cut(Height, c(-Inf, 15000, 60000, Inf)))]
],
File ~ Category,
value.var = "Compound",
fun = toString
)
这使
File High Low Med
1: B21990_COPLT_210520 Betacin Ferrioxamine Aggricin
2: BA6650_CA2LT_210520 Surfactin Metamin, Alanine
推荐阅读
- bash - 在 bash 脚本中优雅地停止 inotifywait 管道
- retrofit - Android毕加索图书馆
- python - Django: OneToOne dropdown in the admin interface and unique associations
- java - 如何将xml值解析为android中的json对象?
- python - 返回值时,“NoneType”对象不可迭代
- android - 如何在图库中创建文件夹并保存文件
- angular - 如何应用样式 svg 插值角度
- typescript - 找出 tsx 脚本中未解析的标识符
- android - 调试系统应用程序
- javascript - 如何在 Eclipse Javascript Oxygen 中突出显示选定的世界?