【发布时间】:2015-04-02 04:49:20
【问题描述】:
我有一个 csv 文件,其中的行包含一个名称,后跟一系列空值和聚集的实值。
Robert,,,1:00-5:00,1:00-5:00,1:00-5:00,,,,,,2:00-4:00,2:00-4:00,2:00-4:00
John,,,1:00-5:00,1:00-5:00,,,,,,,,,,,,
Casey,,,1:00-5:00,1:00-5:00,1:00-5:00,,,,,,2:00-4:00,2:00-4:00,,,
Sarah,,,1:00-5:00,,,,,,,,2:00-4:00,2:00-4:00,2:00-4:00,,
我想在 R 中编写一个计算集群的脚本。如果行中有三个实际的连续值,那么我想将它们计为“一个”集群。如果有任何少于三个的集群(即一个或两个连续值),那么我想将其算作“一个”单独的集群。
所需的 csv 格式输出:
Robert,2,0
John,0,1
Casey,1,1
Sarah,1,1
从comment编辑:
代码导入的 csv 确实有一个标题,但我希望代码忽略标题并从第一行读取(即 Robert,,,1:00-5:00,...)。我还想忽略导入的 csv 文件的最后一列,其中包含每个人工作的总小时数。这是一个带有示例 csv 链接的 github:timeclock_report.csv
Employee,"Mar 23, 2015","Mar 24, 2015","Mar 25, 2015","Mar 26, 2015","Mar 27, 2015","Mar 28, 2015","Mar 29, 2015",total hours
"John Smith",16:35 - 21:17 / 4.7,16:35 - 21:17 / 4.7,16:35 - 21:17 / 4.7,,,,11:17 - 16:08 / 4.85,18.9569
"Emily Smith",,,,,,08:13 - 12:40 / 4.45,,4.4472222222222
"Robert Jenkins",16:54 - 21:11 / 4.29,16:54 - 21:11 / 4.29,,,16:22 - 22:59 / 6.61,,,15.18638
"Rachel Lipscomb",,,,,,13:18 - 19:04 / 5.76,,5.7638888888889
"Donald Driver",,,,,08:13 - 13:05 / 4.86,08:13 - 13:05 / 4.86,10:02 - 16:02 / 6,15.14694
【问题讨论】:
-
有一些数据要分享吗?简而言之,您可以使用 reshape2 库
df <-read.csv(file)、melt(df, id.var="name")` 来执行此操作,其中 name 或任何您调用的具有 id 的列 -
您好,感谢您的回复。代码导入的 csv 确实有一个标题,但我希望代码忽略标题并从第一行读取(即 Robert,,,1:00-5:00,...)。我还想忽略导入的 csv 文件的最后一列,其中包含每个人工作的总小时数。请原谅文件格式不佳,这不是最容易使用的。这是一个带有示例 csv 链接的 github:github.com/agrobins/r_IslandCount (timeclock_report.csv)
标签: r csv count gaps-and-islands