遇到将数据帧转换为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) 我有一个 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并被读作一个长字符串.
文本块示例:
[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)
任何帮助将不胜感激.如果需要更多信息,请告诉我.
我有一个数据集看起来像这样:
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) 我已经解决了相关问题,这些答案并没有解决我的标签不躲避匹配条的问题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) 我在表单中运行回归
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变量列表来自动执行此操作?
我需要生成 100 个文件名。
你将如何生成相应的特征向量files中含有100文件名R: plot01.png, plot02.png, plot03.png, ..., plot99.png, plot100.png?请注意,前 9 个文件的编号以 0 开头。
显而易见但非常无效的解决方案是编写一个包含 100 个文件名的向量。我试图找出一种更有效的方法来创建这个字符向量。
我正在尝试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)
当我放置列的索引时,它可以工作。但是,当我如上所述使用列名时,它不起作用。