r - 如何创建循环和/或函数以将 200 列(并创建 200 个新列/变量)除以另一列以获得百分比?
问题描述
如何创建循环和/或函数以将 200 列(并创建 200 个新列/变量)除以另一列以获得百分比?
如何在循环中执行此操作,以便可以执行 200 列?以及如何命名列的名称,使其成为前面带有“p_”的旧列名?这可能吗?
例如,我正在尝试做这样的事情,但有 200 列。
fans <- data.frame(
population = c(1234, 5678, 2345, 6789, 3456, 7890,
4567, 8901, 5678, 9012, 6789),
bearsfans = c(123, 234, 345, 456, 567,678, 789, 890, 901, 135, 246),
packersfans = c(11,22,33,44,55,66,77,88,99,100,122),
vikingsfans = c(39, 49, 59, 61, 32, 22, 31, 92, 52, 10, 122))
print(fans)
attach(fans)
## create new columns which are the ratio of fans to population
fans$p_bearsfan = bearsfans/population
print(fans)
Output:
## population bearsfans packersfans vikingsfans p_bearsfan
## 1 1234 123 11 39 0.09967585
## 2 5678 234 22 49 0.04121169
解决方案
我们可以直接用一列划分多列。我们grep
用来选择以结尾的列"fans"
并使用这些名称来分配新列。
cols <- grep("fans$", names(fans), value = TRUE)
fans[paste0("p_", cols)] <- fans[cols]/fans$population
fans
# population bearsfans packersfans vikingsfans p_bearsfans p_packersfans p_vikingsfans
#1 1234 123 11 39 0.09968 0.008914 0.031605
#2 5678 234 22 49 0.04121 0.003875 0.008630
#3 2345 345 33 59 0.14712 0.014072 0.025160
#4 6789 456 44 61 0.06717 0.006481 0.008985
#5 3456 567 55 32 0.16406 0.015914 0.009259
#6 7890 678 66 22 0.08593 0.008365 0.002788
#7 4567 789 77 31 0.17276 0.016860 0.006788
#8 8901 890 88 92 0.09999 0.009887 0.010336
#9 5678 901 99 52 0.15868 0.017436 0.009158
#10 9012 135 100 10 0.01498 0.011096 0.001110
#11 6789 246 122 122 0.03624 0.017970 0.017970
推荐阅读
- android - 如果用户2手机的屏幕使用推送关闭,如何向用户1发送XMPP消息确认(双勾)?
- .net - dotnet 发布“无法加载源 https://api.nuget.org/v3/index.json 的服务索引”
- c - 从 Buff 加载文件
- docker - Eureka-client 无法调用另一个 Eureka-client,抛出 UnknownHostException
- python - 作为 Python 程序的一部分运行 OpenCV 脚本
- python - 如何遍历 Odoo 9 Qweb 中的对象列表并获取每个对象?
- react-native - 在 react-native-maps 上更改区域坐标时出错
- php - 拉取代码后的问题 [Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
- java - 有人可以告诉是否有任何用于循环队列的 java 内置包?
- go - go modules 多个主要方法