【问题标题】:Return a vector of values associated with a vector of character strings?返回与字符串向量关联的值向量?
【发布时间】:2019-08-14 15:24:22
【问题描述】:

我有一个来自不同国家/地区的调查对象的数据框。我想在受访者旁边创建一个平均工资为 in country 的新向量。

我有一个国家和工资数据集 - 示例如下:

countries <- c("Australia", "Austria", "Belgium", "Canada", "Chile", "Czech")
wages <- c(61620, 48306, 49419, 50033, 18645, 15374)
data_set <- data.frame(countries, wages)

  countries wages
1 Australia 61620
2   Austria 48306
3   Belgium 49419
4    Canada 50033
5     Chile 18645
6     Czech 15374

在我的数据框中有一个受访者国籍的向量:

c("Martha", "Shelagh","Ronald", "Stefan", "Dimitri", "Jack", "Johan", "Arnold", "Gilles")
c("Canada", "Australia", "Canada", "Czech", "Czech", "Australia", "Czech", "Austraia", "Belgium")

我想创建一个新向量,它返回每个国家/地区的适当平均工资。

它应该返回类似:

 names   country av_wage
1  Martha    Canada   50033
2 Shelagh Australia   61620
3  Ronald    Canada   50033
4  Stefan     Czech   15374
5 Dimitri     Czech   15374
6    Jack Australia   61620
7   Johan     Czech   15374
8  Arnold   Austria   48306
9  Gilles   Belgium   49419

谢谢你的帮助:)

【问题讨论】:

  • aggregate(wages ~ countries, data_set, mean)
  • 看来 OP 正在尝试 merge 第一个聚合 df 与一行 df,最后一个向量。

标签: r


【解决方案1】:

从第一个聚合数据data_set开始。

countries <- c("Australia", "Austria", "Belgium", "Canada", "Chile", "Czech")
wages <- c(61620, 48306, 49419, 50033, 18645, 15374)
data_set <- data.frame(countries, wages)

然后,命名这两个向量,使国家向量与data_set的对应向量同名。

names <- c("Martha", "Shelagh","Ronald", "Stefan", "Dimitri", "Jack", "Johan", "Arnold", "Gilles")
countries <- c("Canada", "Australia", "Canada", "Czech", "Czech", "Australia", "Czech", "Austraia", "Belgium")
new <- data.frame(names, countries)

现在只需合并两个数据框。

merge(data_set, new)
#  countries wages   names
#1 Australia 61620 Shelagh
#2 Australia 61620    Jack
#3   Belgium 49419  Gilles
#4    Canada 50033  Ronald
#5    Canada 50033  Martha
#6     Czech 15374   Johan
#7     Czech 15374  Stefan
#8     Czech 15374 Dimitri

要重新排序列,

mrg <- merge(data_set, new)[c(3, 1, 2)]
mrg
#    names countries wages
#1 Shelagh Australia 61620
#2    Jack Australia 61620
#3  Gilles   Belgium 49419
#4  Ronald    Canada 50033
#5  Martha    Canada 50033
#6   Johan     Czech 15374
#7  Stefan     Czech 15374
#8 Dimitri     Czech 15374

【讨论】:

  • 谢谢 - 我确实在找merge !!
猜你喜欢
  • 2018-05-29
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 2012-09-05
  • 1970-01-01
  • 2016-03-23
相关资源
最近更新 更多