每一次添加一列(取决于另一列)

时间:2015-05-19 04:27:47

标签: r

我的data.frame(Analysis)包含以下内容:

Person <- c(1, 1, 1, 1)
Score <- c(10, 12, 11, 15)
Sample <- c(1, 2, 3, 4
Person.1 <- c(2, 2, 2, 2)
Score.1 <- c( 20, 18, 23, 24)
Sample.1 <- c(1, 2, 3, 4)

我希望添加一个新列(Analysis$Time),将Analysis$Sample中的每个条目按Person除以100,但不确定如何执行此操作?我试过了:

Analysis$Time <- with(Analysis, Sample/100)

虽然此代码只在Analysis的末尾插入一列而不是每个Person。我的度量的采样率为100 Hz。预期产量为:

Person <- c(1, 1, 1, 1)
Score <- c(10, 12, 11, 15)
Sample <- c(1, 2, 3, 4
Time <- c(0.01, 0.02, 0.03, 0.04)
Person.1 <- c(2, 2, 2, 2)
Score.1 <- c( 20, 18, 23, 24)
Sample.1 <- c(1, 2, 3, 4)
Time.1 <- c(0.01, 0.02, 0.03, 0.04)

我并不关心Analysis的列标题,因为我通过下面的代码合并列以进行进一步分析,因此需要为每个Analysis$Time添加Person列。

StatsOutput <- data.frame(Person=unlist(Analysis[grep('^Person', names(Analysis))]), Score=unlist(Analysis[grep('^Score', names(Analysis))]), Sample=unlist(Analysis[grep('^Sample', names(Analysis))]), stringsAsFactors=FALSE) row.names(StatsOutput) <- NULL

1 个答案:

答案 0 :(得分:1)

你可以尝试

ind <- grep('^Sample', names(Analysis))
nm1 <-  make.unique(rep('Time', length(ind)))

Analysis[nm1] <- Analysis[ind]/100
Analysis1 <- Analysis[order(sub('[^.]+', '', names(Analysis)))]