R 如何从列的其余部分中减去列的子集
我有一个数据框架,其中包括我工作中的3个重要变量。变量为CountryName、year和Idealpoint。我想做的是找出美国和任何一个国家在某一年的理想点之间的差异。例如,我想计算1993年美国和克罗地亚之间理想点的差异。我如何将美国年度理想点进行子集划分,并从中减去所有其他国家的数据 下面是数据的样子R 如何从列的其余部分中减去列的子集,r,R,我有一个数据框架,其中包括我工作中的3个重要变量。变量为CountryName、year和Idealpoint。我想做的是找出美国和任何一个国家在某一年的理想点之间的差异。例如,我想计算1993年美国和克罗地亚之间理想点的差异。我如何将美国年度理想点进行子集划分,并从中减去所有其他国家的数据 下面是数据的样子 year Idealpoint CountryName 1 1991 2.98 United States of Am
year Idealpoint CountryName
1 1991 2.98 United States of America
2 1992 3.00 United States of America
3 1993 2.97 United States of America
4 1994 3.00 United States of America
5 1995 3.11 United States of America
6 1996 3.12 United States of America
7 1997 2.99 United States of America
8 1998 2.72 United States of America
9 1999 2.51 United States of America
10 2000 2.56 United States of America
还有其他几行有不同的国家名称,如克罗地亚、瑞典等
我试着创建一个仅由美国理想点数组成的子集向量,然后从上面没有美国数据的数据子集中减去它。问题是,并不是每个国家每年都有一个理想点,因为在某些情况下,这个国家并不存在。因此,US理想点向量的长度不是非US向量长度的倍数。我该怎么做
理想情况下,我希望看到的是(只是一个例子,而不是我期望的实际结果)
我们能做到
library(dplyr)
df1 %>%
group_by(year) %>%
mutate(DifIdealUS = Idealpoint -
Idealpoint[CountryName == 'United States of America'])
或者另一个选项,如果所有“CountryName”中的“year”值相同且顺序为
,
,则
df1$DifIdealUS <- df1$Idealpoint -
df1$Idealpoint[df1$CountryName == "United States of America"]
df1$defidealus更可靠的方法是将美国数据提取到一个新的数据框中,然后每年将其加入df1
。然后,您可以使用上面的mutate函数创建一个新列,而无需通过group by调用—只需从Idealpoint列中减去USA数据
df1$DifIdealUS <- df1$Idealpoint -
df1$Idealpoint[df1$CountryName == "United States of America"]