小编Sot*_*tos的帖子

按行指定特定值后转换为 NA

想象一下以下数据框:

#  ID v1 v2 v3 v4
#1  H  0  0  d  0
#2  I  0  0  0  0
#3  J  d  0  0  0
#4  K  0  0  0  d
#5  L  0  d  0  0
Run Code Online (Sandbox Code Playgroud)

d每行要么有一个,要么没有。

对于每一行,我想d将之后的所有内容转换为NA。期望的结果:

#  ID v1  v2  v3  v4
#1  H  0   0   d  NA
#2  I  0   0   0   0
#3  J  d  NA  NA  NA
#4  K  0   0   0   d
#5  L  0   d  NA  NA …
Run Code Online (Sandbox Code Playgroud)

r dataframe

24
推荐指数
5
解决办法
1552
查看次数

使用`assign()`为列表项赋值

一点点背景首先......

我写了一个中缀函数,实质上取代了成语

x[[length(x) +1]] <- y

..或仅仅是x <- append(x, y)为了矢量.

这里是:

`%+=%` <- function(x, y) {
  xcall <- substitute(x)
  xobjname <- setdiff(all.names(xcall), c("[[", "[", ":", "$"))
  # if the object doesn't exist, create it
  if (!exists(xobjname, parent.frame(), mode = "list") &&
      !exists(xobjname, parent.frame(), mode = "numeric") &&
      !exists(xobjname, parent.frame(), mode = "character")) {
    xobj <- subset(y, FALSE)
  } else {
    xobj <- eval(xcall, envir = parent.frame())
  }

  if (is.atomic(xobj)) {
    if (!is.atomic(y)) {
      stop('Cannot append object of mode …
Run Code Online (Sandbox Code Playgroud)

r variable-assignment infix-operator

17
推荐指数
1
解决办法
147
查看次数

如何在分配给矩阵或数据框时避免将日期格式化值转换为数字?

我遇到了一个我不明白的问题,我在这个网站上找不到这个问题的答案(我一直在讨论如何将日期转换为数字,反之亦然,但这正是我的意思不想知道).

问题是当您将它们分配给矩阵或数据框时,R将格式化为日期的值(例如"20-09-1992")转换为数值.例如,我们有"20-09-1992"的日期格式,我们已经使用了这个class().

as.Date("20-09-1992", format = "%d-%m-%Y")
class(as.Date("20-09-1992", format = "%d-%m-%Y"))
Run Code Online (Sandbox Code Playgroud)

我们现在将此值分配给矩阵,富有想象力地称为矩阵:

Matrix <- matrix(NA,1,1)
Matrix[1,1] <- as.Date("20-09-1992", format = "%d-%m-%Y")
Matrix[1,1]
class(Matrix[1,1])
Run Code Online (Sandbox Code Playgroud)

突然之前格式化为"20-09-1992"的日期已成为值为8298的数字.我不想要值为8298的数字,我想要一个日期格式为"20-09-1992"的日期.

所以我想知道这是否只是R的工作原理,我们不允许为矩阵和数据帧分配日期(不知何故,我已经设法在其他矩阵/数据帧中设置日期,但它打败了我为什么其他时间不同)?是否有一种特殊的方法可以将数据框和矩阵分配给我错过的数据框和矩阵,并且无法从先前(某种程度上成功)尝试将日期分配给数据框/矩阵中推断出来?

r matrix as.date

14
推荐指数
2
解决办法
6602
查看次数

计算字符串中"("的出现次数

我试图在R中的字符串中获取开括号的数量.我正在使用包中的str_count函数stringr

s<- "(hi),(bye),(hi)"
str_count(s,"(")
Run Code Online (Sandbox Code Playgroud)

stri_count_regex出错(string,pattern,opts_regex = attr(pattern,:`正则表达式模式中的嵌套括号错误.(U_REGEX_MISMATCHED_PAREN)

我希望这个例子得到3

r stringr

14
推荐指数
2
解决办法
1万
查看次数

合并列表与常见元素

我有一份清单

[[1]]
[1] 7

[[2]]
[1] 10 11 12 211 446 469

[[3]]
[1] 10 11 12 13

[[4]]
[1] 11 12 13 215

[[5]]
[1] 15 16

[[6]]
[1] 15 17 216 225
Run Code Online (Sandbox Code Playgroud)

我想合并具有公共元素的列表切片,并索引已合并列表切片的索引.我想要的输出如下.

$`1`
[1] 7

$`2`, `3`, `4`
[1] 10 11 12 13 211 215 446 469

$`5`,`6`
[1] 15 16 17 216 225
Run Code Online (Sandbox Code Playgroud)

(我将原始列表切片索引作为新列表名称,但任何形式的输出都可以.)

可重复的数据:

mylist <- list(7, c(10, 11, 12, 211, 446, 469), c(10, 11, 12, 13), c(11, 
12, 13, 215), c(15, 16), c(15, 17, …
Run Code Online (Sandbox Code Playgroud)

merge r list

13
推荐指数
2
解决办法
1029
查看次数

如果任何列包含特定字符串,则删除行

我试图找出R中最好的方法来删除包含特定字符串的行,在我的情况下是'no_data'.

我有来自外部来源的数据,用'no_data'来判断na的

一个例子是这样的:

 time  |speed  |wheels
1:00   |30     |no_data
2:00   |no_data|18
no_data|no_data|no_data
3:00   |50     |18
Run Code Online (Sandbox Code Playgroud)

我想查看数据并删除任何列中包含此"no_data"字符串的每一行.我很难搞清楚这一点.我尝试了一个sapply,filter,grep以及三者的组合.我绝不是一个专家,所以它可能只是我错误地使用这些.任何帮助,将不胜感激.

r

12
推荐指数
3
解决办法
5385
查看次数

将变量添加到嵌套列表

使用R base,我想将一个变量添加到嵌套列表中,其中变量为每个嵌套列表元素更改.以下是一个例子.谢谢.

#CREATE EXAMPLE DATAFRAME
DF <- expand.grid(NAME = c("FRANK", "TONY", "ED"), DATE = seq(as.Date("2014-01-01"), as.Date("2018-12-31"), by = "day"))

#CREATE NESTED LIST
DF <- lapply(1:3, function(i) lapply(2014:2015, function(t) DF[with(DF, as.Date(paste(t, "01", "01", sep = "-")) <= DATE & DATE <= as.Date(paste(t + i, "12", "31", sep = "-"))), ]))

#PRINT NESTED LIST
lapply(DF, lapply, function(x) rbind(head(x), tail(x)))

#I WOULD LIKE TO SIMPLIFY THIS PART
DF[[1]][[1]] <- within(DF[[1]][[1]], GROUP <- 2014)
DF[[1]][[2]] <- within(DF[[1]][[2]], GROUP <- 2015)

DF[[2]][[1]] <- within(DF[[2]][[1]], GROUP …
Run Code Online (Sandbox Code Playgroud)

nested r list

12
推荐指数
3
解决办法
787
查看次数

使用ifelse函数返回null

我试图在R中使用ifelse返回null但是它会抛出一条错误消息.有任何建议请.

这是我的代码:

cntr1 <- ifelse(unlist(gregexpr("---",path_info[j], fixed = TRUE, useBytes = TRUE)) > 0, 3 * length(unlist(gregexpr("---",path_info[j], fixed = TRUE, useBytes = TRUE))),NULL )
Run Code Online (Sandbox Code Playgroud)

错误信息是:

Error in ifelse(unlist(gregexpr("---", path_info[j], fixed = TRUE, useBytes = TRUE)) >  : 
  replacement has length zero In addition: Warning message:
In rep(no, length.out = length(ans)) :
  'x' is NULL so the result will be NULL
Run Code Online (Sandbox Code Playgroud)

r

11
推荐指数
1
解决办法
2827
查看次数

在R中的符号后提取文本

sample1 = read.csv("pirate.csv")
sample1[,7] 
[1] >>xyz>>hello>>mate 1
[2] >>xyz>>hello>>mate 2
[3] >>xyz>>mate 3
[4] >>xyz>>mate 4
[5] >>xyz>>hello>>mate 5
[6] >>xyz>>hello>>mate 6
Run Code Online (Sandbox Code Playgroud)

我必须提取并创建一个包含所有单词的数组>>.

这该怎么做?

另外,如何从以下字符串中提取不同变量中的(a)o qwerty,(b)mate1和(c)pirate1

p= '>>xyz- o qwerty>>hello>>mate1>>sole pirate1'
Run Code Online (Sandbox Code Playgroud)

谢谢

regex r text-mining extraction

10
推荐指数
2
解决办法
1万
查看次数

根据两列分配唯一ID

我有一个如下所示的数据帧(df):

School Student  Year  
A         10    1999
A         10    2000
A         20    1999
A         20    2000
A         20    2001
B         10    1999
B         10    2000
Run Code Online (Sandbox Code Playgroud)

我想创建一个人ID专栏,以便df看起来像这样:

ID School Student  Year  
1   A         10    1999
1   A         10    2000
2   A         20    1999
2   A         20    2000
2   A         20    2001
3   B         10    1999
3   B         10    2000
Run Code Online (Sandbox Code Playgroud)

换句话说,ID变量指示它在数据集中的哪个人,同时考虑学生编号和学校会员资格(这里我们总共有3个学生).

df$ID <- df$Student如果c("School", "Student)是唯一的,我做了并试图请求值+1 .它不起作用.帮助赞赏.

r multiple-columns

10
推荐指数
2
解决办法
2万
查看次数