我有一个数据框,第一列是分类标识符,第二列是频率值,其余列是原始数据计数。我想将所有计数列乘以频率列,但不包括前两列。
所有的原始计数列都以大写字母开头,后跟句点,例如"L.abd"、T.xyz等。
例如,如果我使用以下代码:
require(dplyr)
ID <- c(1,2,3,4,5,6)
Freq <- c(0.1,0.2,0.3,0.5,0.1,0.3)
L.abc <- c(1,1,1,3,1,0)
L.ABC <- c(0,3,2,4,1,1)
T.xyz <- c(1,1,1,1,0,1)
F.ABC <- c(4,5,6,5,3,1)
df <- as.data.frame(cbind(ID, Freq, L.abc, L.ABC, T.xyz, F.ABC))
df_new <- df %>% mutate_each(funs(.*Freq), starts_with("L."))
我可以创建一个新的数据框,其中包含分类数据列以及那些以"L."开头且已乘以相应频率值的列。
有没有办法改变"starts_with"命令,选择所有以大写字母和句点开头的列?到目前为止,我尝试使用"[A-Z]."等修改都没有成功。
提前感谢。
matches("^[A-Z]\\.", ignore.case = FALSE)
,因为它默认为TRUE,而OP想匹配大写字母。例如,比较一下select(iris, matches("^[a-z].*"))
和select(iris, matches("^[a-z].*", ignore.case = FALSE))
。 - talat