基于单列值重构DataFrame

时间:2017-10-17 20:22:36

标签: r csv dataframe

我正在尝试根据多个现有值将数据从一列移动到另一列。我研究并找到了一个简单的单列解决方案 - 如下面的当前代码所示。但是,我想为所有行做一个方法。我一直在尝试研究一种方法,但似乎无法找到一种方法将可能的循环应用于此函数。任何帮助都会很棒。我使用的是最新版本的R和RStudio。谢谢!

CURRENT DATAFRAME:

Row #People
A   3
A   2
A   2
B   1
B   1
C   3
C   3
C   2
C   1

Desired DataFrame:

Row: A B C
     3 1 3
     2 1 3
     2   2
         1

当前代码:

files <- read.csv("SampleData3.csv", header = T)
subset<-as.data.frame(files[files$RowID == A, "DisRank"])

4 个答案:

答案 0 :(得分:1)

尝试以下方法:

CD 'C:\\FOLDERPATH\'
$filter = "FILE_NAME_*.txt" 

$columns = 11,22,32,42,54 

## DO NOT NEED TO REVERSE [array]::Reverse($columns) #too lazy to re-write array after finding out I need to iterate in reverse

$files = get-childitem ./ |where-object {$_.Name -like $filter}
$newDelimiter = '|'

foreach($file in $files)
{
    $file

    $csvFile = 'C:\\FOLDERPATH\NEW_' + $file.BaseName + '.txt'
    if (!(get-childitem ./ |where-object {$_.Name -like $csvFile})) #check whether file has been processed
    { 

        $content | ForEach {
            $line = $_
            $counter = 0
            $columns | ForEach {
                $line = $line.Insert($_+$counter, $newDelimiter)  
                $counter = $counter + 1
                }
            $line = $line.Trim($newDelimiter)
            $line
        } | set-content $csvFile
    }

}

答案 1 :(得分:0)

这是使用tidyverse进行此操作的tidyr::spread方式。您还需要添加行号,我最后使用dplyr的{​​{1}}删除了行号。

首先创建数据:

select(-id)

现在开始工作:

df = read.table(text="Row People
A   3
A   2
A   2
B   1
B   1
C   3
C   3
C   2
C   1", header = TRUE)

答案 2 :(得分:-1)

A B C 1 3, 2, 2 1, 1 3, 3, 2, 1 怎么样?这将在单元格中为您提供opacity列表。

已添加输出

#showMe {
    opacity: 0;
    -moz-animation: cssAnimation 5s;
    /* Firefox */
    -webkit-animation: cssAnimation 5s;
    /* Safari and Chrome */
    -o-animation: cssAnimation 5s;
    /* Opera */
    animation: cssAnimation 5s;
    -webkit-animation-fill-mode: forwards;
    animation-fill-mode: forwards;
}
@keyframes cssAnimation {
    99% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}
@-webkit-keyframes cssAnimation {
    99% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}

答案 3 :(得分:-1)

据我所知,你想要的DataFrame不是R中的有效DataFrame。所以这是不可能的。你应该解释为什么你想要这样的东西。还有其他数据类型,例如可以将数据存储在这样的结构中的列表,但我不知道您之后想要做什么。