有没有一个函数可以打印出以某个值开头的数据集中包含的总数?
考虑这个由4个版本号组成的数据集,
df <- c("1.20", "3.1.20", "2.45", "1.10", "1.67.4.3", "5.200.1", "70.1.2.7")
我需要仅打印版本号为
1.x
的信息。
我的输出将会是:1.20, 1.10, 1.67.4.3
由于这些版本号以"1."开头,所以我不想打印3.1.20
或70.1.2.7
,尽管它们包含"1."作为子串
有没有一个函数可以打印出以某个值开头的数据集中包含的总数?
考虑这个由4个版本号组成的数据集,
df <- c("1.20", "3.1.20", "2.45", "1.10", "1.67.4.3", "5.200.1", "70.1.2.7")
1.x
的信息。
我的输出将会是:1.20, 1.10, 1.67.4.3
由于这些版本号以"1."开头,所以我不想打印3.1.20
或70.1.2.7
,尽管它们包含"1."作为子串
df <- c("1.20", "3.1.20", "2.45", "1.10", "1.67.4.3", "5.200.1", "70.1.2.7")
grep("^1\\.", df, value = TRUE)
使用括号内的函数substring
进行子集提取:
df[substring(df, 1,2) == "1."]
或者:
sum(substr(df, 1, 2) == "1.")
[1] 3
至于这些值本身:
df[substr(df, 1, 2) == "1."]
[1] "1.20" "1.10" "1.67.4.3"
df[df<"2"]
#[1] "1.20" "1.10" "1.67.4.3"
根据您的数据集(例如,如果有以零开头的版本号),您可能需要通过 df[df<"2" & df>="1"]
扩展此建议的解决方案。
在这种情况下,以“1”开头的值的总数可以通过 length(df[df<"2"])
(或 length(df[df<"2" & df >="1"])
)获得。