计算数据帧中分组(Tag)的峰值函数,并将其进一步RBIND到新数据帧中
我不擅长在堆栈上提问,所以如果我弄错了,请原谅。下面是一个场景(我尝试用一个简单的例子来重现):计算数据帧中分组(Tag)的峰值函数,并将其进一步RBIND到新数据帧中,r,R,我不擅长在堆栈上提问,所以如果我弄错了,请原谅。下面是一个场景(我尝试用一个简单的例子来重现): library(“pracma”) 使用tidyverse库标记,我们可以执行以下操作: result <- dfr %>% split(.$Tag) %>% map(~findpeaks(.$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL, minpeakheight = 33,
library(“pracma”)
使用tidyverse
库标记,我们可以执行以下操作:
result <- dfr %>%
split(.$Tag) %>%
map(~findpeaks(.$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL, minpeakheight = 33, minpeakdistance = 4, threshold = 0.42, npeaks = 11, sortstr = FALSE)) %>%
map_df(~data_frame(Temp = parse_number(.x[,1]),
Peak_Mid = parse_number(.x[,2]),
Peak_start = parse_number(.x[,3]),
Peak_End= parse_number(.x[,4])),
.id = 'Tag') %>%
arrange(Tag, Peak_Mid) %>%
group_by(Tag) %>%
mutate(Trend= (lead(Temp)-Temp)/(lead(Peak_Mid)-Peak_Mid))
它在函数列表[[i]](值)中给出了一个错误:找不到添加了库加载的函数“map”,也删除了一个多余的括号,请立即检查它。安装包:包“purr”不可用(适用于R版本3.3.2)…这是任何其他选项的问题它的purr
与3R
,但是您应该安装并加载tidyverse
(它是一个软件包集合)它工作了吗?如果它确实帮助了你,请考虑接受和投票。
for (i in 1:6) {
df=filter(dfr , dfr$Tag == i)
pik =findpeaks(df$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL,
minpeakheight = 33, minpeakdistance = 4,
threshold =0.42, npeaks = 11, sortstr = FALSE)#Peak Function
pik<- as.data.frame(pik)#Converting into data frame as it is in matrix form
names(pik) <- c("Temp","Peak_Mid","Peak_start","Peak_End")# renaming the header
pik <- arrange(pik , Peak_Mid)#Rearranging with Peak_Mid
attach(pik)#attaching pik df
j=1#initializing for loop
s=0#initializing for loop
for (j in 1:nrow(pik))#for loop for calculating slope individual points
s[[j]]=((Temp[j+1]-Temp[j])/(Peak_Mid[j+1]-Peak_Mid[j]))
pik$Trend <- 0#creating new column(Trend) filled with zero
pik$Trend <- s# inserting the calculated s variable onto pik df
w[[i]]=as.data.frame(pik)
}
result <- dfr %>%
split(.$Tag) %>%
map(~findpeaks(.$Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL, minpeakheight = 33, minpeakdistance = 4, threshold = 0.42, npeaks = 11, sortstr = FALSE)) %>%
map_df(~data_frame(Temp = parse_number(.x[,1]),
Peak_Mid = parse_number(.x[,2]),
Peak_start = parse_number(.x[,3]),
Peak_End= parse_number(.x[,4])),
.id = 'Tag') %>%
arrange(Tag, Peak_Mid) %>%
group_by(Tag) %>%
mutate(Trend= (lead(Temp)-Temp)/(lead(Peak_Mid)-Peak_Mid))
map_df(~tibble(
Temp = .x[,1],
Peak_mid = .x[,2],
Peak_start = .x[,3],
Peak_End = .x[,4]),
.id = "Tag")