小编Sam*_*rke的帖子

R:将百分比数据框从因子转换为数字

遇到将数据帧转换为R的问题

我有一堆列被读取factors并带有%符号.

我知道我可以做一个专栏:

df[,3] <- as.numeric(sub("%","",df[,3]))
Run Code Online (Sandbox Code Playgroud)

但是尝试将其应用于整个数据集似乎不起作用并将所有值更改为NA.我究竟做错了什么?这是我试图使用的代码:

df[,-1] <- as.numeric(sub("%","",df[,-1]))
Run Code Online (Sandbox Code Playgroud)

编辑:我知道我可以解决这个问题:

for (i in 2:66) {
df[,i] <- as.numeric(sub("%","",df[,i]))
print(class(df[,i]))
}
Run Code Online (Sandbox Code Playgroud)

但必须有更优雅(并且希望是单行)的方式来做到这一点.

编辑2:这是一些数据:

    Year        v1      v2       v3       v4
1 12-Oct        0%      0%      39%      14%
2 12-Nov        0%      6%      59%       4%
3 12-Dec       22%      0%      37%      26%
4 13-Jan       45%      0%      66%      19%
5 13-Feb       28%     39%      74%      13%
Run Code Online (Sandbox Code Playgroud)

回答:在你们帮助了我之后,我在一个命令中就是这样做的!我在指定功能部分时遇到了问题.

df=read.csv("all response rates.csv")
df[-1]<-data.frame(apply(df[-1], 2, function(x) 
    as.numeric(sub("%","",as.character(x)))))
Run Code Online (Sandbox Code Playgroud)

r

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

使用多个分隔符将一列拆分为两列时,将多余的内容合并到左侧

我有一个 data.frame 列,我想将其分成两列,由空格字符分隔。如果有多个分隔符,我仍然只需要两列,将额外的内容合并到第一个结果列。所以这:

dat <- data.frame(full_name = c("first1 last1", "first2 middle2 last2"))

             full_name
1         first1 last1
2 first2 middle2 last2
Run Code Online (Sandbox Code Playgroud)

应该变成:

      first_name last_name
1         first1     last1
2 first2 middle2     last2
Run Code Online (Sandbox Code Playgroud)

我使用的separate()是 tidyr 包,它通过合并到右侧来处理额外的分隔符,如下所示:

library(tidyr)
dat %>%
  separate(full_name, c("first_name", "last_name"), " ", extra = "merge")

  first_name     last_name
1     first1         last1
2     first2 middle2 last2
Run Code Online (Sandbox Code Playgroud)

我可以使用 tidyr 函数完成我想要的操作吗?如果不能,我还能如何仅在最终分隔符上拆分列?

r tidyr

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

如何在R中使用strsplit制作字符串向量?

我有一个文本块,我已经写入R并被读作一个长字符串.

文本块示例:

[1] "abc \n 18:19 \n abc \n 7-9 \n abc \n"
Run Code Online (Sandbox Code Playgroud)

文本块摘要:

summary(text)
Length       Class       Mode
     1   character  character
Run Code Online (Sandbox Code Playgroud)

然后我做了一个strsplit text <- strsplit(text, "\n")

之后的文字摘要 strsplit

summary(text)
      Length    Class        Mode
[1,]  5         -none-  character
Run Code Online (Sandbox Code Playgroud)

我完成的时候我想要什么 strsplit

summary(text)
Length      Class       Mode
     5  character  character 
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.如果需要更多信息,请告诉我.

split r strsplit string-parsing

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

删除R中具有重复值的行的所有副本

我有一个数据集看起来像这样:

name  position type
A       12      S
B       13      T
C       12      S
D       12      T
E       11      S
F       10      S
Run Code Online (Sandbox Code Playgroud)

我想删除具有重复位置和类型的行。

我试图使用该duplicated函数查找重复的行,但是我不知道如何删除具有重复值的所有行。

dup = db[duplicated(db[2:3]),]
Run Code Online (Sandbox Code Playgroud)

我想删除具有相同位置和类型但名称不同的行。我想要的输出是:

name  position type
B       13      T
D       12      T
E       11      S
F       10      S
Run Code Online (Sandbox Code Playgroud)

r

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

ggplot2 标签不会躲避 geom_col 条

我已经解决了相关问题,这些答案并没有解决我的标签不躲避匹配条的问题geom_col

数据

x <- structure(
  list(capacity = c(0, 0, 0, 2.1, 3.1, 4, 4.6, 5.6, 6, 
                                 1.9, 2.3, 3.8),
       year = c("FY21", "FY21", "FY21", "FY21", "FY21",
                "FY20", "FY20", "FY20", "FY20", "FY19", "FY19", "FY19"),
       unified_date = structure(c(18536, 18567, 18597, 18628, 18659,
                                  18567, 18597, 18628, 18659, 18536,
                                  18567, 18597), class = "Date")),
  row.names = c(NA, -12L), class = c("tbl_df", "tbl", "data.frame"))                   
Run Code Online (Sandbox Code Playgroud)

代码

ggplot2::ggplot(x, aes(x = unified_date, y = capacity, fill = year)) +
  geom_col(position = "dodge") +
  geom_text(aes(label = capacity), …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 geom-text

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

循环回归模型术语的组合

我在表单中运行回归

reg=lm(y ~ x1+x2+x3+z1,data=mydata)
Run Code Online (Sandbox Code Playgroud)

在最后一个术语的位置z1,我想循环遍历一组不同的变量,z1通过z10为每个变量运行一个回归作为最后一个术语.例如,在第二次运行中我想使用

reg=lm(y ~ x1+x2+x3+z2,data=mydata)
Run Code Online (Sandbox Code Playgroud)

在第三轮:

reg=lm(y ~ x1+x2+x3+z3,data=mydata)
Run Code Online (Sandbox Code Playgroud)

如何通过循环遍历z变量列表来自动执行此操作?

r apply lm

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

用前导零创建数字序列中文件名的字符向量

我需要生成 100 个文件名。

你将如何生成相应的特征向量files中含有100文件名R: plot01.png, plot02.png, plot03.png, ..., plot99.png, plot100.png?请注意,前 9 个文件的编号以 0 开头。

显而易见但非常无效的解决方案是编写一个包含 100 个文件名的向量。我试图找出一种更有效的方法来创建这个字符向量。

r

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

使用开始和结束列的名称选择连续范围的data.frame列

我正在尝试data.frame使用列名的间隔对a的列进行子集化。

例如,data.frame A

A
ID1 ID2 ID3
1   5  01901
2   5  01902
Run Code Online (Sandbox Code Playgroud)

例如,我想用A的列创建变量b:

b=A[,"ID2":"ID3"]
Run Code Online (Sandbox Code Playgroud)

“ ID1”:“ ID3”中的错误:NA / NaN参数另外:警告消息:1:在[.data.frame(A,“ ID1”:“ ID3”):强制引入的NA 2:在[.data.frame(A,“ ID1” :“” ID3“):强制引入的NA

我要怎么解决:

b
ID2 ID3
5  01901
5  01902
Run Code Online (Sandbox Code Playgroud)

当我放置列的索引时,它可以工作。但是,当我如上所述使用列名时,它不起作用。

r dataframe

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

标签 统计

r ×8

apply ×1

dataframe ×1

geom-text ×1

ggplot2 ×1

lm ×1

split ×1

string-parsing ×1

strsplit ×1

tidyr ×1