如何使用for循环插值?

时间:2017-08-08 14:07:47

标签: r

我正在尝试从我从excel导入的数据框中插值。在表中有两列(值1和值2),我试图为每个唯一的“名称”插值。数据框包含550行,其中包含90个唯一名称(因此每个名称具有多个“Value1”值和多个“Value2”值)。数据框中还有一堆不相关的列,我没有用。

数据框示例:

Name   Value1  Value2  NotImportantvalue1  NotImportantvalue2 
    A       1         1            ABC                ABC
    A       2         1            ABC                ABC
    B       40        40           ABC                ABC 
    C       30        30           ABC                ABC   
    C       1         2            ABC                ABC
    D       2         400          ABC                ABC
    D       3         500          ABC                ABC
    D       40        2            ABC                ABC 

我一直在讨论循环遍历数据框的for循环,该数据框包含Names的唯一值,试图让它通过my.data中的Value1 / Value2列,其中“Name”列中的名称与名称相匹配在独特的数据框架中,但我没有得到我想要的结果。

我目前使用的代码是,当数据框“Name”中的i与my.data中“Name”列中的值匹配并保存为具有相同名称的数据帧时,尝试获取Value1和Value2 。之后,我必须弄清楚如何在每个数据帧中插值。

    #Set working directory
    setwd("H:\\R-project")

    #Set file path
    file <- file.path("Data.xlsx")

    #set library
    library(XLConnect)

    #Read data
    my.data <- readWorksheetFromFile(file,sheet=1,startRow=1)

    #Unique Names
    Name <- data.frame(unique(my.data$Names))
    colnames(Name) <- "Name"

for (i in Name$Name) {
  assign(i, data.frame(my.data$Value1[my.data$Name==Name[[i],]], my.data$Value2[my.data$Name==Name[[i],]])

}

我也不确定是否要使用90个单独的data.frames,或者我应该使用类似的东西

name_list <- split(my.data, as.factor(my.data$name))

直接从列表中插入(虽然我不知道具体怎么做,但循环不是我的强项)。

非常感谢任何关于如何继续的指导或帮助!

1 个答案:

答案 0 :(得分:0)

如你所知

name_list <- split(my.data, my.data$name)

会为您提供已list

分割的name个数据框

您可以使用以下内容对该列表进行操作

lapply(name_list, function(x) approx(x$Value1, x$Value2))

如果您想要更具体的答案,则需要提供有关所需输出的更多详细信息。