我的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
答案 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)))]