【发布时间】:2022-08-23 12:19:09
【问题描述】:
我试图用匹配的子字符串识别列名,然后计算这些列中值的差异。
样本数据:
V1_ABC <- c(1,2,3,4)
V2_ABC <- c(2,3,4,5)
V1_WXYZ <- c(10,11,12,13)
V2_WXYZ <- c(11,12,13,14)
Date <- c(2001,2002,2003,2004)
所以 df 看起来像:
df <- data.frame(Date, V1_ABC, V2_ABC, V1_WXYZ, V2_WXYZ)
Date V1_ABC V2_ABC V1_WXYZ V2_WXYZ
1 2001 1 2 10 11
2 2002 2 3 11 12
3 2003 3 4 12 13
4 2004 4 5 13 14
我想计算 ABC 和 WXYZ 的 V1 减去 V2。我的原始数据集要大得多,因此我不想为每个数据集手动执行此操作。我想自动执行此操作,以便 R 比较列标题并查找哪些列具有相同的结束子字符串(V1_ABC 和 V2_ABC,以及 V1_WXYZ 和 V2_WXYZ),然后从 V1_ 中减去 V2_。像这样:
Date V1_ABC V2_ABC V1_WXYZ V2_WXYZ dif_ABC dif_WXYZ
1 2001 1 2 10 11 -1 -1
2 2002 2 3 11 12 -1 -1
3 2003 3 4 12 13 -1 -1
4 2004 4 5 13 14 -1 -1
我发现的大多数函数,例如 grep 或 intersect 要么查找您输入的特定字符串,要么返回向量相同的值。
关于如何根据名称/子字符串自动配对的任何想法?
-
\"_\" 之前的所有列前缀和它之后的匹配键吗?