在R中通过索引将多行减少为1

时间:2016-05-27 15:18:51

标签: r dplyr

我对R比较陌生。我正在处理每个时间戳有多个数据点的数据集,但它们是多行的。我试图为每个时间戳创建一行,每个变量都有一列。

示例数据集

Time    Variable    Value
10      Speed       10
10      Acc         -2
10      Energy      10
15      Speed       9
15      Acc         -1
20      Speed       9
20      Acc         0
20      Energy      2

我想将此转换为

Time    Speed    Acc    Energy
10      10       -2     10
15      9        -1     (blank or N/A)
20      8         0     2

这些是测量值,因此它们并不总是完整的。

我尝试过ddply将每个单独的值提取到数组中并重新组合,但列的长度不同。我已经尝试了聚合,但我无法弄清楚如何保持变量和值的关联。我知道我可以用for循环类型的解决方案做到这一点,但在R中这似乎是一个很糟糕的方法。任何建议或方向都会有所帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

我假设data.frame的名字是df

library(tidyr)
spread(df,Variable,Value)

答案 1 :(得分:0)

通常是class SliderCell: UITableViewCell { @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var maxLegendLabel: UILabel! @IBOutlet weak var minLegendLabel: UILabel! @IBOutlet weak var slider: UISlider! @IBOutlet weak var answerLabel: UILabel! var delegate: QuestionSliderCellDelegate? override func awakeFromNib() { super.awakeFromNib() } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) isFirstResponder() } @IBAction func slideAction(sender: UISlider) { let sliderValue = Int(sender.value) print("slider value") print(sliderValue) } func display(block: Block){ titleLabel.text = block.title slider.value = 1.0 } } dcast的作业。首先,我们举例reproducible

reshape2

然后:

df <- structure(list(Time = c(10L, 10L, 10L, 15L, 15L, 20L, 20L, 20L),    
Variable = structure(c(3L, 1L, 2L, 3L, 1L, 3L, 1L, 2L), .Label = c("Acc", 
"Energy", "Speed"), class = "factor"), Value = c(10L, -2L, 10L, 
9L, -1L, 9L, 0L, 2L)), .Names = c("Time", "Variable", "Value"),
class = "data.frame", row.names = c(NA, -8L))

使用library(reshape2) dcast(df, Time ~ ...) Time Acc Energy Speed 10 -2 10 10 15 -1 NA 9 20 0 2 9 ,您可以(化妆品)对列重新排序:

dplyr