【发布时间】:2020-10-18 07:51:53
【问题描述】:
我是 R 的新手,并试图通过使用最新的 gapminder dataset(即从另一行减去一行)来 subtract 和 country value 多年来 from another country。
数据集
gapminder_new %>%
filter(country == c("India","Bangladesh"))
########## output ############
country 1960 1961 1962 1963 1964 1965 1966 1967
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
Bangladesh 372 384 394 381 411 405 402 382
India 330 336 339 352 370 353 345 365
我已经尝试了许多不同的组合,包括底座和管道,但都没有成功。
初始尝试失败
gapminder_new %>%
filter(country == c("India","Bangladesh")) %>%
.[country == "India",] - .[country == "Bangladesh",]
###################
gapminder_new %>%
filter(country == c("India","Bangladesh")) %>%
mutate(Diff_result = (. %>% filter(country == "India") ) - (. %>% filter(country == "Bangladesh")) )
###################
gapminder_new[country == "India",] - gapminder_new[country == "Bangladesh",]
在这之后,我意识到这可能是一个问题,因为国家名称不能被减去,因为它们是字符,所以我应该从减法中消除它们并仅将它们用作行索引 就像在 python 中一样。
所以我尝试了下面的代码,但即使这样也不起作用:
按行索引减法
# setting a row index
rownames(gapminder_new) <- gapminder_new$country
# subtracting only numerical col using row index
gapminder_new["India", 2: ncol(gapminder_new)] - gapminder_new["Bangladesh", 2: ncol(gapminder_new)]
如何在基础 R 和使用管道中解决此问题???
每天我都会在 R 中遇到 10 种不同的数据操作任务。在某个地方我们需要 pull(),在某个地方只能选择 .[[]] 而不是在其他地方。所有这些规则在哪里定义?
我不知道为什么 R 的选择如此复杂,从基础 R 到管道,从单个 ML 包到插入符号到 tidymodel 再到许多其他东西。现在我真的觉得 Python 比 R 更简单、更容易学习,而且学习时间也很短。
(更新:这是我最终使用的并且还在答案中发布了详细信息)
#convert to data frame
gapminder_new <- as.data.frame(gapminder_new)
# set country row index
rownames(gapminder_new) <- gapminder_new$country
# subtracting only numerical col using row index
gapminder_new["India", 2: ncol(gapminder_new)] - gapminder_new["Bangladesh", 2: ncol(gapminder_new)]
【问题讨论】: