使用for循环基于不同的列在R中创建新列
Creating new column in R based on different column with a for loop
我尝试在 R 中创建一个新列,其中包含不同列的值的平均值,但针对它们各自的日期。
我的数据框看起来像这样:
Temp Date
4 2018-01-01
3 2018-01-01
2 2018-01-02
2 2018-01-02
我现在想创建第三列,其中包含每天的平均温度。所以它看起来像这样:
Temp Date mean_Temp
4 2018-01-01 3.5
3 2018-01-01 3.5
2 2018-01-02 2
2 2018-01-02 2
我已经试过了:
for (i in as.list(df$Date)) {
df$mean_Temp[i] <- paste(mean(df$Temp))
}
但这不起作用,它只是 returns 温度的总体平均值,而不是单独计算每一天的平均值。
谢谢大家,我希望我把我的问题说清楚了。
在这种情况下我不会使用 for 循环,因为它完全没有必要。
这是一个tidyverse
方法。根据您想要的输出,每个 Date
在计算平均值后仍然会有两条记录。如果每个 Date
只需要一行,请使用 summarise()
而不是 mutate()
.
变异()
library(tidyverse)
df %>% group_by(Date) %>% mutate(mean_Temp = mean(Temp))
# A tibble: 4 x 3
# Groups: Date [2]
Temp Date mean_Temp
<dbl> <chr> <dbl>
1 4 2018-01-01 3.5
2 3 2018-01-01 3.5
3 2 2018-01-02 2
4 2 2018-01-02 2
总结()
df %>% group_by(Date) %>% summarize(mean_Temp = mean(Temp))
# A tibble: 2 x 2
Date mean_Temp
<chr> <dbl>
1 2018-01-01 3.5
2 2018-01-02 2
尝试:
library(dplyr)
df %>% group_by(Date) %>% mutate(mean_Temp = mean(Temp))
使用 dplyr 分组时,您可以使用 summarise
或 mutate
。 summarise
将 return 每组一行,而 mutate
将 add/modify 一列并重复每组中所有条目的值。
我尝试在 R 中创建一个新列,其中包含不同列的值的平均值,但针对它们各自的日期。
我的数据框看起来像这样:
Temp Date
4 2018-01-01
3 2018-01-01
2 2018-01-02
2 2018-01-02
我现在想创建第三列,其中包含每天的平均温度。所以它看起来像这样:
Temp Date mean_Temp
4 2018-01-01 3.5
3 2018-01-01 3.5
2 2018-01-02 2
2 2018-01-02 2
我已经试过了:
for (i in as.list(df$Date)) {
df$mean_Temp[i] <- paste(mean(df$Temp))
}
但这不起作用,它只是 returns 温度的总体平均值,而不是单独计算每一天的平均值。 谢谢大家,我希望我把我的问题说清楚了。
在这种情况下我不会使用 for 循环,因为它完全没有必要。
这是一个tidyverse
方法。根据您想要的输出,每个 Date
在计算平均值后仍然会有两条记录。如果每个 Date
只需要一行,请使用 summarise()
而不是 mutate()
.
变异()
library(tidyverse)
df %>% group_by(Date) %>% mutate(mean_Temp = mean(Temp))
# A tibble: 4 x 3
# Groups: Date [2]
Temp Date mean_Temp
<dbl> <chr> <dbl>
1 4 2018-01-01 3.5
2 3 2018-01-01 3.5
3 2 2018-01-02 2
4 2 2018-01-02 2
总结()
df %>% group_by(Date) %>% summarize(mean_Temp = mean(Temp))
# A tibble: 2 x 2
Date mean_Temp
<chr> <dbl>
1 2018-01-01 3.5
2 2018-01-02 2
尝试:
library(dplyr)
df %>% group_by(Date) %>% mutate(mean_Temp = mean(Temp))
使用 dplyr 分组时,您可以使用 summarise
或 mutate
。 summarise
将 return 每组一行,而 mutate
将 add/modify 一列并重复每组中所有条目的值。