【发布时间】:2020-05-04 17:42:19
【问题描述】:
假设我有一个包含两列 Location 和 Product 的数据集,它显示了在每个位置销售的每种产品的数量。我为每个地点销售的每种产品的数量创建了一个列联表:
data%>%
group_by(Location,Product)%>%
summarize(n=n()) %>%
pivot_wider(names_from = product, values_from = n)
现在,假设我有 US_Product、Japan_Product、...、Germany_Product,而不是单个 Product 列。如何在 for 循环中创建列联表?
注意:当我创建像 p<-c("Product1", "Product2",..., "Product3") 这样的产品向量并遍历这些产品时,我会收到一条错误消息,因为这些是字符串而不是变量名。
这是一个最小的例子:
Location <- c("AB","ON","MN","AB","ON")
Product1<-c("Type1","Type2","Type1","Type3","Type1")
Product2<-c("Type3","Type2","Type3","Type3","Type2")
Product3<-c("Type1","Type2","Type1","Type1","Type1")
data <- tibble(Location,Product1,Product2,Product3)
data%>%
group_by(Location,Product1)%>%
summarize(n=n()) %>%
pivot_wider(names_from = Product1, values_from = n) #this works as expected
#now I want to do the same thing in a loop
prodV <- c("Product1","Product2","Product3")
for (i in c(1:3)){
var <- prodV[i]
data%>%
group_by(Location,var)%>%
summarize(n=n()) %>%
pivot_wider(names_from = var, values_from = n)
}
【问题讨论】:
-
欢迎来到 Stack Overflow!您能否通过分享您的数据样本来重现您的问题,以便其他人可以提供帮助(请不要使用
str()、head()或屏幕截图)?您可以使用reprex和datapasta包来帮助您。另见Help me Help you & How to make a great R reproducible example?
标签: r string loops variables contingency