【发布时间】:2017-04-29 10:43:11
【问题描述】:
我正在考虑如何按大学名称(第一行:A,...,F)、字段名称(第一列:Acute,.. .,En) 和/或毕业时间 (time) 在以下文件 DS.csv 中。
我在想dplyr 方法,但无法将数字 ID 查找(线程答案How to overload function parameters in R?)扩展到三个变量的查找。
挑战
- 如何按第一行查找?也许,类似于
$1 == "A"。 - 如何将大学查询扩展到两列?伪代码
$1 == "A"大约是第二列和第三列,...,$1 == "F"大约是最后两列。 -
通过 3 个查找条件进行查找:第一行(无标题)、带有标题
Field的第一列和标题time。伪代码times <- getTimes($1 == "A", Field == "Ane", by = "desc(time)")
数据DS.csv 有数据。第一列表示实验。以下数据采用交叉表格式,因此
,A,,B,,C,,D,,E,,F,
Field,time,T,time,T,time,T,time,T,time,T,time,T
Acute,0,0,8.3,1,7.5,1,8.6,2,0,0,8.3,4
Ane,9,120,7.7,26,7.9,43,7.8,77,7.9,60,8.2,326
En,15.6,2,12.9,1,0,0,0,0,14.3,1,14.6,4
Fo,9.2,2,0,0,5.4,1,0,0,0,0,7.9,3
并采用直表格式,这样
Field,time,T,Experiment
Acut,0,0,A
An,9,120,A
En,15.6,2,A
Fo,9.2,2,A
Acute,8.3,1,B
An,7.7,26,B
En,12.9,1,B
Fo,0,0,B
Acute,7.5,1,C
An,7.9,43,C
En,0,0,C
Fo,5.4,1,C
Acute,8.6,2,D
An,7.8,77,D
En,0,0,D
Fo,0,0,D
Acute,0,0,E
An,7.9,60,E
En,14.3,1,E
Fo,0,0,E
Acute,8.3,4,F
An,8.2,326,F
En,14.6,4,F
Fo,7.9,3,F
伪代码
library('dplyr')
ow <- options("warn")
DF <- read.csv("/home/masi/CSV/DS.csv", header = T)
# Lookup by first row, Lookup by Field, lookup by Field's first column?
times <- getTimes($1 == "A", Field == "Ane", by = "desc(time)")
预期输出:9
广义预期输出:a, b, c, ...
## Data where values marked by small letters a,b,c, ... are wanted
# uni1 uni2 ...
# time T time T ...
#Field1 a c
#Field2 b ...
#... ...
R:3.3.3 (2017-03-06)
操作系统:Debian 8.7
硬件:华硕 Zenbook UX303UA
【问题讨论】:
-
@hhh 我已经回滚了你的编辑。您应该使用 OP 发布的数据,而不是插入您自己的数据表示。
-
但是您知道如何将原始数据转换为编辑后的数据吗?如果没有,你不应该将它包含在你的问题中。然后由回答的人获得所需的格式。