根据另一个数据框中的数据删除行?
Remove rows based on data in another dataframe?
我现在有一个包含超过 186k 个观察值(行)的数据集,如图 1 所示。这些都是 BVDID 列中的公司,它们应该包含 2013 年到 2017 年所有年份的数据。
missingdata <- series %>% filter(LIABILITIES == 0) %>% select(BVDID)
但是,我使用上面的代码在 missingdata 对象中发现了 87k 行只有零值。
如何删除数据框缺失数据中带有 BVDID(公司代码)的系列对象的行?此外,应该有一种方法可以让那些年份在我的 str(series) 下看起来更好,并根据每个公司代码将它们升序排列。
此致
series %>%
# filter out the BVDIDs from missingdata
filter(!BVDID %in% pull(missingdata)) %>%
# order the df
arrange(BVDID, year)
方法有很多种,只有一种。
使用 tidyverse
anti_join
函数给出类似于集合操作 A-B
的结果,因此将从第二个数据中删除所有匹配的行。
series %>% anti_join(missingdata, by =c("BVDID" = "BVDID"))
或者直接。 Liabilities == 0
将 return 布尔值,在将这些值转换为 0 或 1 之前添加 +
并检查这些值的总和是否大于 1,这些值将被删除。
series %>% group_by(BVDID) %>% filter(sum(+(LIABILITIES == 0)) > 0)
我现在有一个包含超过 186k 个观察值(行)的数据集,如图 1 所示。这些都是 BVDID 列中的公司,它们应该包含 2013 年到 2017 年所有年份的数据。
missingdata <- series %>% filter(LIABILITIES == 0) %>% select(BVDID)
但是,我使用上面的代码在 missingdata 对象中发现了 87k 行只有零值。
如何删除数据框缺失数据中带有 BVDID(公司代码)的系列对象的行?此外,应该有一种方法可以让那些年份在我的 str(series) 下看起来更好,并根据每个公司代码将它们升序排列。
此致
series %>%
# filter out the BVDIDs from missingdata
filter(!BVDID %in% pull(missingdata)) %>%
# order the df
arrange(BVDID, year)
方法有很多种,只有一种。
使用 tidyverse
anti_join
函数给出类似于集合操作 A-B
的结果,因此将从第二个数据中删除所有匹配的行。
series %>% anti_join(missingdata, by =c("BVDID" = "BVDID"))
或者直接。 Liabilities == 0
将 return 布尔值,在将这些值转换为 0 或 1 之前添加 +
并检查这些值的总和是否大于 1,这些值将被删除。
series %>% group_by(BVDID) %>% filter(sum(+(LIABILITIES == 0)) > 0)