r - 一次对多列进行采样并返回聚合数据框
问题描述
我有一个如下所示的数据集:
Column 1 Column 2 Column 3 Column 4
Male 35 USA DC
Female 10 USA NYC
我已经聚合了这个数据框来计算每列中唯一值的数量以及总行数的相应百分比。
所以我的新数据框如下所示:
我有一个看起来像这样的数据框(这只是示例):
Column Name Nominal Percent
1 Col1 3 1.00
2 Col2 69333 99.51
3 Col3 65766 94.40
4 Col4 60727 87.16
我想要的第二个数据框是创建第三列 - 示例模式。新列应该是每一列的样本。像这样:
Column Name Nominal Percent Sample_1
1 Col1 3 1.00 Male
2 Col2 69333 99.51 25
我不记得如何为每一列自动关闭它。我不想手动输入每个列名。有什么提示吗?
解决方案
为了完整性。
数据,稍作修改以使其一致且对 R 友好(无空格):
origdat <- read.table(header=TRUE, stringsAsFactors=FALSE, text='
Column_1 Column_2 Column_3 Column_4
Male 35 USA DC
Female 10 USA NYC')
newdat <- read.table(header=TRUE, stringsAsFactors=FALSE, text='
Column_Name Nominal Percent
1 Column_1 3 1.00
2 Column_2 69333 99.51
3 Column_3 65766 94.40
4 Column_4 60727 87.16')
详细方法,使用临时data.frame
存储采样:
set.seed(2)
tempdat <- data.frame(Column_Name = names(origdat),
Sample_1 = sapply(origdat, sample, size=1),
stringsAsFactors=FALSE)
将其与基础 R 合并:
merge(newdat, tempdat, by="Column_Name", all=TRUE)
# Column_Name Nominal Percent Sample_1
# 1 Column_1 3 1.00 Male
# 2 Column_2 69333 99.51 10
# 3 Column_3 65766 94.40 USA
# 4 Column_4 60727 87.16 DC
合并dplyr
:
dplyr::left_join(newdat, tempdat, by="Column_Name")
# Column_Name Nominal Percent Sample_1
# 1 Column_1 3 1.00 Male
# 2 Column_2 69333 99.51 10
# 3 Column_3 65766 94.40 USA
# 4 Column_4 60727 87.16 DC
推荐阅读
- javascript - React Link 的空字符串是有效值吗?
- c# - 特殊波斯字符中的 C# IndexOf
- jhipster - Liquibase 生成变更日志
- python - Python,Dash:如何将 KPI Card 组件添加到仪表板
- android - Cordova Android 点击 input type=file 会打开系统文件浏览器,而不是相机选项
- bootstrap-treeview - 引导树视图:树不显示
- python - 月份或指定的日期范围明智分组
- angular - 用于 IE11 和边缘问题的 Angular Elements Polyfills
- python - Pandas - 使用多个值填充 NaN
- python - 计算每个 kdeplot 轮廓的统计信息