2017-01-13 4 views
0

У меня есть набор файлов CSV с заголовком, но содержат записи для разных дней, какКак применить функцию к определенному колонку dataframes магазина в списке

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
 
<html> 
 

 
<head> 
 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
 
    <title></title> 
 
    <meta name="generator" content="LibreOffice 5.1.4.2 (Linux)" /> 
 
    <meta name="created" content="2017-01-13T23:23:37.721354329" /> 
 
    <meta name="changed" content="2017-01-13T23:24:34.687494320" /> 
 
</head> 
 

 
<body lang="en-US" dir="ltr"> 
 
    <p> 
 
    <br/> 
 
    <br/> 
 

 
    </p> 
 
    <table width="664" cellpadding="4" cellspacing="0"> 
 
    <col width="123"> 
 
     <col width="125"> 
 
     <col width="125"> 
 
      <col width="125"> 
 
      <col width="124"> 
 
       <tr valign="top"> 
 
       <td width="123" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.04in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>arrtime</p> 
 
       </td> 
 
       <td width="125" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.04in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>interaatime</p> 
 
       </td> 
 
       <td width="125" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.04in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>serTime</p> 
 
       </td> 
 
       <td width="125" style="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0.04in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>DepTime</p> 
 
       </td> 
 
       <td width="124" style="border: 1px solid #000000; padding: 0.04in"> 
 
        <p>ActSerTime</p> 
 
       </td> 
 
       </tr> 
 
       <tr valign="top"> 
 
       <td width="123" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.37</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>0</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.39</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.40</p> 
 
       </td> 
 
       <td width="124" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in"> 
 
        <p>0.01</p> 
 
       </td> 
 
       </tr> 
 
       <tr valign="top"> 
 
       <td width="123" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.39</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>2</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.40</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.42</p> 
 
       </td> 
 
       <td width="124" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in"> 
 
        <p>0.02</p> 
 
       </td> 
 
       </tr> 
 
       <tr valign="top"> 
 
       <td width="123" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.40</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>1</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.42</p> 
 
       </td> 
 
       <td width="125" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0in"> 
 
        <p>8.46</p> 
 
       </td> 
 
       <td width="124" style="border-top: none; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding-top: 0in; padding-bottom: 0.04in; padding-left: 0.04in; padding-right: 0.04in"> 
 
        <p>0.04</p> 
 
       </td> 
 
       </tr> 
 
    </table> 
 
    <p style="margin-bottom: 0in"> 
 
    <br/> 
 

 
    </p> 
 
</body> 
 

 
</html>

Я использовал код для импорта файлов

#Scripts to load all the csv files of the queue data from day 1 to 13 
    path <- "/home/ilanre/Documents/Queue Research Work/" 
    files <- list.files(path=path, pattern="*.csv") 
    for(file in files) 
    { 
     perpos <- which(strsplit(file, "")[[1]]==".") 
     assign(
     gsub(" ","",substr(file, 1, perpos-1)), 
     read.csv(paste(path,file,sep=""))) 
    } 

Я хочу использовать lappy() функцию, чтобы найти сумму столбца 2 и 5 на каждый день и хранить все в списке или dataf rame Thanks

ответ

0

Используя объект files, который вы уже создали, ниже будет создан список с суммой второго дня и суммой пятого столбца за каждый день.

list_of_sums <- lapply(files, function(file){ 
     df <- read.csv(file) 
     c(sum(df)[, 2]), sum(df)[, 5]) 
    }) 
0

Рассмотрим data.frame() внутри lapply связать суммы двух столбцов:

path <- "/home/ilanre/Documents/Queue Research Work/" 
files <- list.files(path=path, pattern="*.csv") 

dfList <- lapply(files, function(f){ 
    df <- read.csv(paste0(path, f)) 
    data.frame(SumOfInteraatime = sum(df$interaatime), SumOfActSerTime = sum(df$ActSerTime)) 
}) 

dfList <- setNames(dfList, gsub(".csv", "", files)) 
Смежные вопросы