创建一个';分类的';for循环中子集的变量

创建一个';分类的';for循环中子集的变量,r,loops,for-loop,R,Loops,For Loop,我想在for循环中放置一个操作,这样该操作就可以分别应用于每个子集 目标是创建一个for循环,为变量“State”生成一个子集,然后为每个子集中的每个条目分配分位数值(1:4或0-25%,25%-50%,50%-75%,75%-100%)。这有点难以解释,所以这里有一个例子。我的数据如下所示: 我的for循环的初始值为: for (i in data$State) { state.US <- paste("state", i, sep = "_") assign(sta

我想在for循环中放置一个操作,这样该操作就可以分别应用于每个子集

目标是创建一个for循环,为变量“State”生成一个子集,然后为每个子集中的每个条目分配分位数值(1:4或0-25%,25%-50%,50%-75%,75%-100%)。这有点难以解释,所以这里有一个例子。我的数据如下所示:



我的for循环的初始值为:

for (i in data$State) {
    state.US <- paste("state", i, sep = "_")
    assign(state.US, data[data$State == i,])
}

这个问题已经困扰了我好几个月了(学校和工作中的各种项目),当我知道有更好的方法时,我就要输入重复的代码了

我的博士R编程教授无法提供帮助,所以如果有人能为我澄清这一点,我将不胜感激

谢谢


编辑:这是我第一次在堆栈溢出的这一边,所以欢迎任何提示/批评。

无需将数据集拆分为不同的数据帧,也可以使用
for
循环,您可以按组进行计算。使用
dplyr

library(dplyr)

data %>%
  group_by(State) %>%
  mutate(Quantile = cut(Summer_Temperature, breaks = quantile(Summer_Temperature), 
                    labels = 1:4, include.lowest = TRUE))
或在带
ave的基本R中

data$Quantile <- with(data, ave(Summer_Temperature, State, FUN = function(x) 
           cut(x, breaks = quantile(x), labels = 1:4, include.lowest = TRUE)))

data$Quantile无需将数据集拆分为不同的数据帧,也无需将
用于
循环,您可以按组进行计算。使用
dplyr

library(dplyr)

data %>%
  group_by(State) %>%
  mutate(Quantile = cut(Summer_Temperature, breaks = quantile(Summer_Temperature), 
                    labels = 1:4, include.lowest = TRUE))
或在带
ave的基本R中

data$Quantile <- with(data, ave(Summer_Temperature, State, FUN = function(x) 
           cut(x, breaks = quantile(x), labels = 1:4, include.lowest = TRUE)))

data$Quantile非常感谢!!我有一个后续问题要问你,如果我想要一个值1(在分位数列中)代表0-5%,我需要更改什么?@jrolfe你可以在
分位数
分位数(夏季温度,c(0,0.05,0.5,0.75,1))
中指定自定义概率。这并没有指定值1:4,而是提供如下范围:(1.28e+04,2.24e+04)或[60,5.57e+03],甚至NAvalues@jrolfe您还需要添加
标签
数据%>%分组依据(状态)%%>%变异(分位数=切割(夏季温度,断裂=分位数(夏季温度,c(0,0.05,0.5,0.75,1)),标签=1:4,包含最低值=真))
非常感谢!!我有一个后续问题要问你,如果我想要一个值1(在分位数列中)来表示0-5%,我需要更改什么?@jrolfe你可以在
分位数
分位数(夏季温度,c(0,0.05,0.5,0.75,1))中指定自定义概率
这不会指定1:4的值,而是提供如下范围:(1.28e+04、2.24e+04)或[60、5.57e+03),甚至NAvalues@jrolfe您还需要添加标签。
数据%>%分组(状态)%%>%变异(分位数=切割(夏季温度,断裂=分位数(夏季温度,c(0,0.05,0.5,0.75,1)),标签=1:4,include.lower=TRUE))
library(dplyr)

data %>%
  group_by(State) %>%
  mutate(Quantile = cut(Summer_Temperature, breaks = quantile(Summer_Temperature), 
                    labels = 1:4, include.lowest = TRUE))
data$Quantile <- with(data, ave(Summer_Temperature, State, FUN = function(x) 
           cut(x, breaks = quantile(x), labels = 1:4, include.lowest = TRUE)))