假设我有以下数据框:
df <- data.frame(year=c(2010,2011,2012,2010,2011,2010,2011,2012), company = c("a","a","a","b","b","c","c","c"))
year company
1 2010 a
2 2011 a
3 2012 a
4 2010 b
5 2011 b
6 2010 c
7 2011 c
8 2012 c
Run Code Online (Sandbox Code Playgroud)
我想找到这三年中都存在的公司。一种麻烦的方法是:
library(dplyr)
companies_2010 <- df %>% filter(year==2010) %>% select(company)
companies_2011 <- df %>% filter(year==2011) %>% select(company)
companies_2012 <- df %>% filter(year==2012) %>% select(company)
companies <- intersect(companies_2010, companies_2011) %>% intersect(., companies_2012)
company
1 a
2 c
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点?
我试图根据它们对所有列的总和的贡献从我的数据框中删除列。
一个 1x5 数据帧的例子如下(我想也可以以类似的方式从 5x1 数据帧中删除行,然后转置它)。假设这些值的总和为 100。
df <- data.frame(V1 = 5, V2 = 10, V3 = 20, V4 = 40, V5 = 25)
V1 V2 V3 V4 V5
5 10 20 40 25
Run Code Online (Sandbox Code Playgroud)
我现在想保留对所有列的总和贡献最大的列,例如至少 80%。
所以我想要实现的是:
V3 V4 V5
20 40 25
Run Code Online (Sandbox Code Playgroud)
有没有一种优雅的方法来做到这一点?
提前致谢!