r - 当我已经有了单元格值时,如何在 R 中创建表或命名数组?
问题描述
给定一个数据框,例如:
df = data.frame(
Bread=rep(c("White", "Wheat", "Rye"), each=4),
Meat=rep(c("Ham", "Roast Beef", "Turkey", "Pastrami"), times=3),
Price=rnorm(12)
)
df
#> Bread Meat Price
#> 1 White Ham 0.6428015
#> 2 White Roast Beef -0.4382468
#> 3 White Turkey -0.9383151
#> 4 White Pastrami 1.6069649
#> 5 Wheat Ham -0.9898017
#> 6 Wheat Roast Beef 0.4567167
#> 7 Wheat Turkey 0.9479741
#> 8 Wheat Pastrami -0.5721409
#> 9 Rye Ham 0.1234204
#> 10 Rye Roast Beef -1.1446393
#> 11 Rye Turkey -2.8622073
#> 12 Rye Pastrami -1.1646482
由reprex 包于 2020-06-02 创建(v0.3.0)
我想制作一张这样的表格,但里面填满了这些值。
+-------+-----+--------+------------+----------+
| | Ham | Turkey | Roast Beef | Pastrami |
+-------+-----+--------+------------+----------+
| White | | | | |
+-------+-----+--------+------------+----------+
| Wheat | | | | |
+-------+-----+--------+------------+----------+
| Rye | | | | |
+-------+-----+--------+------------+----------+
之后,我想添加诸如“面包类型”和“肉类选择”之类的暗名。
我尝试使用spread
,但我不知道如何将最终数据框转换为表格对象。
tidyr::spread(df, Bread, Price)
#> Meat Rye Wheat White
#> 1 Ham 1.4325955 0.2399214 -1.3911592
#> 2 Pastrami 0.3127256 0.1133108 0.1940318
#> 3 Roast Beef -1.6286526 0.8210128 -0.4017497
#> 4 Turkey -0.8071035 -0.2611048 -0.9201723
由reprex 包于 2020-06-02 创建(v0.3.0)
解决方案
我们可以使用pivot_wider
with column_to_rownames
fromtibble
library(dplyr)
library(tibble)
library(tidyr)
df %>%
pivot_wider(names_from = Meat, values_from = Price) %>%
column_to_rownames('Bread') %>%
as.matrix
# Ham Roast Beef Turkey Pastrami
#White 0.3881185 0.2906277 -0.2855983 0.07601472
#Wheat -0.5602986 0.4471884 0.9085011 -0.50505960
#Rye -0.3010040 -0.7260360 -1.1800770 0.25307471
或与acast
library(reshape2)
acast(df, Bread ~ Meat)
或xtabs
从base R
out <- xtabs(Price ~ Bread + Meat, df)
names(dimnames(out)) <- c("Bread Type", "Meat Selection")
out
# Meat Selection
#Bread Type Ham Pastrami Roast Beef Turkey
# Rye -0.30100401 0.25307471 -0.72603598 -1.18007703
# Wheat -0.56029860 -0.50505960 0.44718837 0.90850113
# White 0.38811847 0.07601472 0.29062767 -0.28559829
推荐阅读
- android - 活动背景透明度和模糊
- c# - 在 C# 中调用受保护的方法 - 反射或单独的派生类?
- php - Laravel Api 部署在 apache2 Ubuntu 路由问题
- r - 如何在 r 中解析这个 xml 文档?
- .net-core - 工作单元 - 所有存储库都需要是属性吗?
- c - C - 赋值从没有强制转换的指针生成整数
- c# - UWP c#从类访问MainPage文本块
- angular - 如何在不产生多个调用的情况下以角度视图访问方法?
- c# - 发布 Web api 时,Dotnet publish 不创建文件夹
- batch-file - 在 SVN 预提交挂钩中提取多行提交日志