我正在查看像这样的数据框
marker <- c(rep(0, 5), rep(1, 5))
val <- c(1:10)
df <- data.frame(marker, val)
看起来像这样:
+-----+--------+------+
| | marker | val |
+-----+--------+------+
| 1 | 0 | 1 |
| 2 | 0 | 2 |
| 3 | 0 | 3 |
| 4 | 0 | 4 |
| 5 | 0 | 5 |
| 6 | 1 | 6 |
| 7 | 1 | 7 |
| 8 | 1 | 8 |
| 9 | 1 | 9 |
| 10 | 1 | 10 |
+-----+--------+------+
我想创建一个新的列变量yes
,如果val
为1则取值marker
,取值no
的新列变量val
{1}}如果marker
为0.所以我希望如此:
+----+-----+----+
| | no | yes|
+----+-----+----+
| 1 | 1 | 6 |
| 2 | 2 | 7 |
| 3 | 3 | 8 |
| 4 | 4 | 9 |
| 5 | 5 | 10 |
+----+-----+----+
我怀疑这可以通过reshape2
cast
函数来完成,但我无法绕过它。
编辑:根据答案和我现实生活中的数据集::
marker
中的0和1的数量不一定是有序的,也不一定是相同的数字。 val
只是一个价值。这里我放1到10,但这些只是占位符。答案 0 :(得分:4)
您可以按照以下方式使用tidyverse
,
library(tidyverse)
df %>%
group_by(marker) %>%
mutate(new = seq(n())) %>%
spread(marker, val)
# A tibble: 5 × 3
# new `0` `1`
#* <int> <int> <int>
#1 1 1 6
#2 2 2 7
#3 3 3 8
#4 4 4 9
#5 5 5 10
答案 1 :(得分:4)
只要每个组具有相同数量的元素,您就可以在基础R中使用mkdir -p package/macosx
cp Test.icns package/macosx
jdk=$(/usr/libexec/java_home)
$jdk/bin/javapackager -deploy -native dmg \
-srcfiles Test.jar -appclass package.Test -name Test \
-outdir deploy -outfile Test -v
cp deploy/bundles/Test-1.0.dmg installer.dmg
ls -l
open installer.dmg
和split
。data.frame
添加所需的名称。
setNames