我有一个包含 2 列的“df”:
Combinations <- c(0011111111, 0011113111, 0013113112, 0022223114)
Values <- c(1,2,3,4)
df <- cbind.data.frame(Combinations, Values)
我正在尝试找到一种方法来对数据框进行子集化或过滤,其中“组合”列的第 7、第 8 和第 9 位数字等于 311。对于给出的示例,我希望组合的 001111311 1、0013113112、0022223114
在某些情况下,我需要在不同的第 n 个位置找到不同的组合。
我知道 substring() 可以为单行找到这些值,但我不确定如何将其应用于整个数据帧。
答案 0 :(得分:3)
subtring
也适用于向量。
subset(df, substring(Combinations, 7, 9) == 311)
# Combinations Values
#2 0011113111 2
#3 0013113112 3
#4 0022223114 4
数据
Combinations <- c("0011111111", "0011113111", "0013113112", "0022223114")
Values <- c(1,2,3,4)
df <- data.frame(Combinations, Values)
答案 1 :(得分:2)
这行得通吗?
class Userextends ChangeNotifier {
final String id,dob;
User(
{this.id,
this.dob});
factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'],
dob: json['dob'],
);
}
}
答案 2 :(得分:2)
另一个基本的 R 想法:
Combinations <- c("0011111111", "0011113111", "0013113112", "0022223114")
Values <- c(1,2,3,4)
df <- data.frame(Combinations, Values)
df[grep(pattern = "^[0-9]{6}311.$", df$Combinations), ]
输出:
Combinations Values
2 0011113111 2
3 0013113112 3
4 0022223114 4
提示,如果您想了解更多关于正则表达式的信息,这个网站对我有很大帮助:https://regexr.com/3elkd
答案 3 :(得分:0)
不漂亮但有效:
df[which(lapply(strsplit(df$Combinations, ""), function(x) which(x[7]==3 & x[8]==1 & x[9]==1))==1),]
Combinations Values
2 0011113111 2
3 0013113112 3
4 0022223114 4
数据:
Combinations <- c("0011111111", "0011113111", "0013113112", "0022223114")
Values <- c(1,2,3,4)
df <- cbind.data.frame(Combinations, Values)