这是这个问题的后续内容: Duplicating Observations of a dataframe, but also Replace Specific Variable Values in R
我尝试尽可能简洁地写,同时提供所有必要的信息。在当前示例中,我有一个如下所示的 df:
df<-data.frame(alpha=c(1, "3, 4", "2, 4, 5", 2, 1, 3, "1, 2", "1, 2, 3"),
beta=c("2, 4", "3, 4", 1, 3, 3, "1, 4", "1, 2", "1, 2, 3"),
color=c("red", "yellow"))
# alpha beta color
#1 1 2, 4 red
#2 3, 4 3, 4 yellow
#3 2, 4, 5 1 red
#4 2 3 yellow
#5 1 3 red
#6 3 1, 4 yellow …Run Code Online (Sandbox Code Playgroud) 我通过不同的观察者/观察者组对一个物种进行了多次观察,并希望创建所有独特观察者的列表。我的数据如下所示:
data <- read.table(text="species observer
1 A,B
1 A,B
1 B,E
1 B,E
1 D,E,A,C,C
1 F" , header = TRUE, stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
我的输出应该返回所有唯一观察者的列表 - 所以:
A,B,C,E,F
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令对 C 列中的数据进行子串化,但这仅返回观察者的唯一组合。
all_observers <- unique(strsplit(as.character(data$observer), ","))
all_observers
[[1]]
[1] "A" "B"
[[2]]
[1] "B" "E"
[[3]]
[1] "D" "E" "A" "C" "C"
[[4]]
[1] "F"
Run Code Online (Sandbox Code Playgroud) 假设我有一个字符串:
StringA/StringB/StringC
Run Code Online (Sandbox Code Playgroud)
有什么方法可以按/符号拆分该字符串,但将其保留在返回值中:
StringA
/StringB
/StringC
Run Code Online (Sandbox Code Playgroud) 我正在尝试拆分40位数字的字符串(即拆分123456789123456789123456789成1 2 3 4等)
遗憾的是strsplit它不起作用,因为它需要字符,并且使用转换字符串as.character不起作用,因为它非常长并且R自动切断长数字的小数(最大值为22位小数).因此,我最终得到"1.2345e+35"一个字符串,而不是完整的数字.
是否存在strsplit十进制截止问题的数字变体或解决方法?我似乎无法在stackoverflow上找到答案,但如果之前已经回答过,请道歉.提前致谢!
我有一个区,县和年的数据集.如果某个地区/县组合在任何一年发生,我希望每年都能实现这种组合.以下是我想到的两种方法.第一种方法使用函数来创建区,县和年的组合,并且只需要六行代码.底层方法使用了组合paste,expand.grid并且strsplit更加复杂/复杂.
可能有比上述更有效的方法.例如,是否有一种方法expand.grid可以实现区域/县/年组合,可能只有1或2行代码?
谢谢你的任何建议.我的职能可以胜任,但这个问题对我来说是一个学习的机会.我更喜欢基地R.
以下是示例数据集:
df.1 <- read.table(text = '
state district county year apples
AA EC A 1980 100
AA EC B 1980 10
AA EC C 1980 150
AA C G 1980 200
AA C other 1980 20
AA C I 1980 250
AA WC R 1980 300
AA WC S 1980 30
AA WC other 1980 350
AA EC A 1999 1100
AA EC D 1999 110
AA EC E …Run Code Online (Sandbox Code Playgroud) 我有一个67MM的行data.table,人名和姓氏用空格分隔.我只需要为每个单词创建一个新列.
这是一小部分数据:
n <- structure(list(Subscription_Id = c("13.855.231.846.091.000",
"11.156.048.529.090.800", "24.940.584.090.830", "242.753.039.111.124",
"27.843.782.090.830", "13.773.513.145.090.800", "25.691.374.090.830",
"12.236.174.155.090.900", "252.027.904.121.210", "11.136.991.054.110.100"
), Account_Desc = c("AGUAYO CARLA", "LEIVA LILIANA", "FULLANA MARIA LAURA",
"PETREL SERGIO", "IPTICKET SRL", "LEDESMA ORLANDO", "CATTANEO LUIS RAUL",
"CABRAL CARMEN ESTELA", "ITURGOYEN HECTOR", "CASA CASILDO"),
V1 = c("AGUAYO", "LEIVA", "FULLANA", "PETREL", "IPTICKET",
"LEDESMA", "CATTANEO", "CABRAL", "ITURGOYEN", "CASA"), V2 = c("CARLA",
"LILIANA", "MARIA", "SERGIO", "SRL", "ORLANDO", "LUIS", "CARMEN",
"HECTOR", "CASILDO"), V3 = c(NA, NA, "LAURA", NA, NA, NA,
"RAUL", "ESTELA", NA, NA), `NA` = …Run Code Online (Sandbox Code Playgroud) 我找到了这段代码:
string = c("G1:E001", "G2:E002", "G3:E003")
> sapply(strsplit(string, ":"), "[", 2)
[1] "E001" "E002" "E003"
Run Code Online (Sandbox Code Playgroud)
清楚地strsplit(string, ":")返回大小为3的向量,其中每个组件i是包含Gi和的大小为2的向量E00i.
但为什么另外两个论点"[", 2只能选择那些E00i?据我所知,函数接受的唯一参数是:
sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
Run Code Online (Sandbox Code Playgroud) 我正在处理一组非常原始的数据,需要对其进行整形才能使用它.我试图根据分隔符拆分选定的列'|'
d <- data.frame(id = c(022,565,893,415),
name = c('c|e','m|q','w','w|s|e'),
score = c('e','k|e','e|k|e', 'e|o'))
Run Code Online (Sandbox Code Playgroud)
是否可以将数据帧拆分为一个,以便最终看起来像这样.
df <- data.frame(id = c(22,22,565,565,565,565,893,893,893,415,415,415,415,415,415),
name = c('c','e','m','m','q','q','w','w','w','w','w','s','s','e','e'),
score = c('e','e','k','e','k','e','e','k','e','e','o','e','o','e','o'))
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试了各种不同的字符串拆分功能,但没有太多运气:(
有人可以帮忙吗?
我想通过向量中定义的多个分隔符来分割字符:
text1 <- "aweoiutw839572/)(&2aslk2468"
text2 <- "147we547iu5erhg24tzu"
dat <- rbind(text1, text2)
vector <- c("we", "iu", "24")
Run Code Online (Sandbox Code Playgroud)
结果应该是:
var1 del1 var2 del2 var3 del3 var4
a we o iu tw839572/)(&2aslk 24 68
147 we 547 iu 5erhg 24 tzu
Run Code Online (Sandbox Code Playgroud)
有strsplit什么想法吗?