【发布时间】:2021-02-04 06:24:15
【问题描述】:
我有一个数据框dfcompanies,其中列出了大约 6000 家公司,其标识代码为indentifier,他们的行业industry 以及他们在 132 个不同类别中的得分(NA, 0, or 1),例如category1-4:
> dfcompanies
identifier industry category1 category2 category3 category4
1 MBWS.PA Alcoholic Beverages 1 0 1 1
2 KAER.VI Commercial Banks 0 1 0 1
3 TIRO.VI Commercial Banks 1 NA 1 0
4 EVNV.VI Power Generation 0 1 1 1
5 MANV.VI Processed Foods NA 0 NA NA
6 LENV.VI Chemical 1 NA 1 1
我还有第二个数据框,dfmatcategories,它定义了industry 中存在的所有行业;在industrymat 列中列出;他们的材料类别在categorymat,并在第三列描述类别type(strength, or concern):
> dfmatcategories
industrymat categorymat type
1 Alcoholic Beverages category1 concern
2 Alcoholic Beverages category2 strength
3 Alcoholic Beverages category3 strength
4 Insurance category100 strength
5 Insurance category99 strength
6 Chemical category1 concern
理想情况下,我想为dfcompanies 中的每个公司获取在categorymat 中定义的材料类别中收到的积分总和,这些材料类别在新列sum_mat 中添加了type strength到dfcompanies。
> dfcompanies
identifier industry category1 category2 category3 category4 sum_mat
1 MBWS.PA Alcoholic Beverages 1 0 1 1 1
2 KAER.VI Commercial Banks 0 1 0 1 5
3 TIRO.VI Commercial Banks 1 NA 1 0 3
4 EVNV.VI Power Generation 0 1 1 1 4
5 MANV.VI Processed Foods NA 0 NA NA 1
6 LENV.VI Chemical 1 NA 1 1 0
示例:
在dfcompaniesindentifierMBWS.PA的公司属于industryAlcoholic Beverages并获得分数:1category1,01,@987654 @ 在category3 中,还有1 在category4 中。
在dfmatcategories 下industrymat 为Alcoholic Beverages
行 1-3 在列 categorymat 中仅列出 category1、category2 和 category3 作为材料类别。
但是,只有category2 和category3 属于type strength。
因此对于MBWS.PAsum_mat => 1 =0(得分category2)+ 1(得分category3)。
不幸的是,我是 R 新手,完全不知道如何解决这个问题。
有人可以帮帮我吗?
最好的问候 托马斯
【问题讨论】:
-
我无法理解您如何计算
sum_mat,如何获得值1,5,3等等。这些计算值是针对您的原始数据框还是此处给出的示例? -
为了说明,我为 MBWS.PA 添加了 sum_mat 的计算。给出的数据仅用于说明,MBWS.PA的sum_mat以外的其他值无法手动计算。
标签: r dataframe sum conditional-statements