对于示例数据框:
df <- structure(list(code = c("a1", "a1", "b2", "v4", "f5", "f5", "h7",
"a1"), name = c("katie", "katie", "sally", "tom", "amy", "amy",
"ash", "james"), number = c(3.5, 3.5, 2, 6, 4, 4, 7, 3)), .Names = c("code",
"name", "number"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-8L), spec = structure(list(cols = structure(list(code = structure(list(), class = c("collector_character",
"collector")), name = structure(list(), class = c("collector_character",
"collector")), number = structure(list(), class = c("collector_double",
"collector"))), .Names = c("code", "name", "number")), default = structure(list(), …Run Code Online (Sandbox Code Playgroud) 我正在研究一个大型数据集,其中包含一周内的旅行行为数据.在一周的时间里,人们已经完成了他们在那一周内进行的个人旅行的记录.个人通过唯一的识别号码(ID)识别.我想做的是从每个唯一ID可用的每周数据中选择两天的日记数据(可能包含一次或多次旅行),并将其放入新的数据框中.示例数据框详述如下:
Df1 <- data.frame(ID = c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3),
date = c("1st Nov", "1st Nov", "3rd Nov", "4th Nov","4th Nov","5th Nov","2nd Nov", "2nd Nov", "3nd Nov", "4th Nov","5th Nov","5th Nov","2nd Nov", "2nd Nov", "3nd Nov", "4th Nov","5th Nov"))
Run Code Online (Sandbox Code Playgroud)
我们将非常感谢您对上述任何帮助.
非常感谢,
凯蒂
我正在编写一份大问卷 - 我为不同的问题(例如df1和df2)生成汇总频率表.
a<-c(1:5)
b<-c(4,3,2,1,1)
Percent<-c(40,30,20,10,10)
df1<-data.frame(a,b,Percent)
c<-c(1,1,5,2,1)
Percent<-c(10,10,50,20,10)
df2<-data.frame(a,c,Percent)
rm(a,b,c,Percent)
Run Code Online (Sandbox Code Playgroud)
我通常使用以下命令将数据帧导出为csv文件:
write.csv(df1 ,file="df2.csv")
Run Code Online (Sandbox Code Playgroud)
但是,由于我的调查问卷有很多问题,因此有数据框,我想知道R中是否有一种方法可以组合不同的数据框(比如用分隔它们的线),然后将它们导出到csv(然后最终在Excel中打开它们) ?当我打开Excel时,因此我只有一个文件包含我的所有问题数据帧,一个在另一个之下.这个csv文件比拥有单个文件要容易得多,我必须依次打开才能查看结果.
提前谢谢了.
这是一个非常简单的问题,但我希望有人能够帮助我避免额外的不必要的代码行。我有一个简单的数据框:
Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1)),C=(c(2,3,NA,5,NA,9)))
Run Code Online (Sandbox Code Playgroud)
我想要做的是生成一个额外的列,它是 A、B 和 C 的乘法,然后我将其绑定到原始数据帧。
所以,我通常会使用:
attach(Df.1)
D<-A*B*C
Run Code Online (Sandbox Code Playgroud)
但显然 NA 位于 C 列中,我在变量 D 中得到 NA。我不想排除所有 NA 行,而只是忽略此列中的 NA 值(然后 D 中的值将只是A 和 B 的乘法,或者在 C 可用的情况下,A*B*C。
我知道我可以简单地将 NA 替换为 1,因此计算保持不变,或者使用 if 语句,但我想知道最简单的方法是什么?
有任何想法吗?
我使用以下代码给我一个日期的星期几(格式为dd/mm/yyyy).
编辑:我上传了一个更重要的数据集.
df <- structure(list(Date = c("18/01/2013", "18/01/2013", "18/01/2013",
"18/01/2013", "18/01/2013"), Time = c("07:25:30", "07:25:40",
"07:25:50", "07:26:00", "07:26:10"), Axis1 = c(217L, 320L, 821L,
18L, 40L), Steps = c(6L, 7L, 5L, 1L, 1L), wday = c(7, 7, 7, 7, 7)), .Names = c("Date", "Time", "Axis1", "Steps", "wday"), row.names = 18154:18158, class = "data.frame")
library(lubridate)
df$wday = wday(df$Date)
df$wday.name = wday(df$Date, label = TRUE, abbr = TRUE)
Run Code Online (Sandbox Code Playgroud)
据R报道,18/1是星期五,而不是星期六.
有没有人有任何建议如何纠正这个?
编辑:我试图遵循Dirk给出的建议......
as.POSIXlt(df[,1])$wday
Run Code Online (Sandbox Code Playgroud)
......但这仍然暗示18/1是星期六.
我的时区是GMT/UTC(英国夏令时+ 1),但是因为我只想让R从日期栏中读取(只是d/m/y),我认为我不需要指定它. .
如何将正确的wday列添加到现有的R数据帧中?(如我原来的脚本中所述).我正在努力让建议的编码工作,因为我以错误的格式给出了数据帧 - 道歉.
对于示例数据框:
df1 <- structure(list(X = 1:15, a = c(2L, 3L, 4L, 3L, 7L, 5L, NA, 2L,
9L, 7L, 0L, 1L, 20L, 15L, 14L)), .Names = c("X", "a"),
class = "data.frame", row.names = c(NA,
-15L))
Run Code Online (Sandbox Code Playgroud)
我使用以下代码将列“a”划分为四分位数:
cut.at.n.tile <- function(X , n = 4){
cut( X , breaks = quantile( X ,
probs = (0:n)/n , na.rm = TRUE ) , include.lowest = TRUE )}
df1$a.quartile <- cut.at.n.tile( df1$a , n = 4)
Run Code Online (Sandbox Code Playgroud)
如何用 1 - 4 替换标签(1 是最低的)?我不想简单地重新编码这些值,因为我将使用不同的连续变量运行很多次。
任何帮助将不胜感激。
我有一个问题,我希望匹配一个非常大的调查数据集的开始邮政编码和结束邮政编码,并将这些结果放在一个新的数据框中.我创建了一个示例数据框用于说明目的.
ID = c(1,2,3,4,5)
StartPC = c("AF2 4RE","AF3 5RE","AF1 3DR","AF2 4RE","AF2 4PE")
EndPC = c("AF2 4RE","NA","AF2 3DR","AX2 4RE","AF2 4PE")
data<-data.frame(ID,StartPC,EndPC)
data2 <- subset(data, StartPC==EndPC,na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,我想创建一个数据帧(data2),它只包含开始和结束邮政编码相同的ID号.但是,我收到错误消息:
Ops.factor(StartPC,EndPC)中的错误:因素的级别集是不同的
输出只需要在新数据表中包含ID号1和5.
以下数据框表示纬度和经度小数点坐标.我希望使用+和 - 来显示十进制度是北,南,东还是西(在纬度和经度列中).
因此,如果十进制度为N,则纬度为正.如果十进制度为S,则纬度为负.如果十进制度为E,则经度为正,如果经度为负,则经度为负.十进制度是W.
a <- c(1:3)
Lat <- c(54.5, 55.2, 10.1)
NS <- c("N","N","S")
Long <- c(1.2, 0.5, 1.3)
EW <- c("W","E","W")
df1 <- data.frame(a,Lat,NS,Long,EW)
Run Code Online (Sandbox Code Playgroud)
我怎么会在R?任何建议将不胜感激.
对于示例数据集,我按国家/地区创建金字塔图,显示人口中超重男性和女性的级别(%).
library(plotrix)
xy.males.overweight<-c(23.2,33.5,43.6,33.6,43.5,43.5,43.9,33.7,53.9,43.5,43.2,42.8,22.2,51.8,
41.5,31.3,60.7,50.4)
xx.females.overweight<-c(13.2,9.4,13.5,13.5,13.5,23.7,8,3.18,3.9,3.16,23.2,22.5,22,12.7,12.5,
12.3,10,0.8)
agelabels<-c("uk","scotland","france","ireland","germany","sweden","norway",
"iceland","portugal","austria","switzerland","australia","new zealand","dubai","south africa",
"finland","italy","morocco")
par(mar=pyramid.plot(xy.males.overweight,xx.females.overweight,labels=agelabels,
gap=9))
Run Code Online (Sandbox Code Playgroud)
我在这里使用'plotrix'找到了这种方法:https://stats.stackexchange.com/questions/2455/how-to-make-age-pyramid-like-plot-in-r
我希望创建一个稍微更详细的金字塔图,两边都添加一个堆积条形图,显示男性和女性的超重和百分比肥胖(最好是红色/蓝色的不同色调)."肥胖"的示例数据值如下:
xx.females.obese<-c(23.2,33.5,43.6,33.6,43.5,23.5,33.9,33.7,23.9,43.5,18.2,22.8,22.2,31.8,
25.5,25.3,31.7,28.4)
xy.males.obese<-c(13.2,9.4,13.5,13.5,13.5,23.7,8,3.18,3.9,3.16,23.2,22.5,22,12.7,12.5,
12.3,10,0.8)
Run Code Online (Sandbox Code Playgroud)
此外,如果图表上的"年龄"可以更改(到国家/地区),那将有所帮助.
非常感谢您的任何帮助/建议.我愿意在适当时使用plotrix或ggplot2.
我希望运行以下代码:
g <- ggplot (df, aes(x=Age, y=RSL, shape = Type)) +
geom_point() +
scale_shape_manual(values=c(1,15,5)) + #makes open circle/triangle
theme(axis.line=element_line(colour = "black", size = 0.5, linetype = "solid")) + # adds solid black x and y axis
geom_errorbar(aes(ymin=y_min_error, ymax=y_max_error)) + # y error bar
geom_errorbarh(aes(xmin=x_min_error, xmax=x_max_error)) +
ylim(0,120) + # y axis limits
theme_classic() +
theme(legend.position="bottom")
g
Run Code Online (Sandbox Code Playgroud)
如何删除误差条上的刻度线末端?
另外,如果有人可以建议我如何轻松删除代码中的多余空间,那就太好了。我dput用来提取我的数据帧的样本,但是每当我在控制台中复制代码时,我也会获得很多额外的空间。
示例数据框:
df <- structure(list(SITCD = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label …Run Code Online (Sandbox Code Playgroud)