我是新来的R
,并且已按如下方式导入了我的数据集(点表示还有剩余数据):
> num.csv <- read.csv("c:/num.csv", header=T)
> print(num.csv)
X.Y
1 22500;482
2 25842;1
3 27221;1
4 32757;1
5 40152;1
. .
. .
. .
如何为这些数据制作散点图?
谢谢。
我是新来的R
,并且已按如下方式导入了我的数据集(点表示还有剩余数据):
> num.csv <- read.csv("c:/num.csv", header=T)
> print(num.csv)
X.Y
1 22500;482
2 25842;1
3 27221;1
4 32757;1
5 40152;1
. .
. .
. .
如何为这些数据制作散点图?
谢谢。
首先,数据需要在不同的列中。虽然该文件被标记为“csv”,但您似乎使用分号而不是逗号来分隔。重新格式化文件或尝试:
num.csv <- read.csv("c:/num.csv", header=T, sep=";")
然后,您可以使用带有 R 的各种绘图包之一来制作绘图。例如:
install.packages("ggplot2"); #ggplot2 is not part of the standard install...
library(ggplot2);
qplot(X, Y, data=num.csv);
我没有测试过上面的内容,这取决于你的数据框是如何从 read.csv 中出来的。
@patrickmdmnet 的答案是要走的路,但我有点好奇,只是想尝试一个程序化的解决方案。我主要对 R strplit() 函数是如何工作的感到好奇:
# Test matrix
tmp.mtrx <- matrix(c("1;2", "3;4", "5;6", "7;8"), ncol=1)
# The split
tmp.split <- strsplit(tmp.mtrx, ";")
# Put it all together into a new matrix
new_matrix <- matrix(tmp.split[[1]], ncol=2)
for(i in 2:length(tmp.split)){
new_matrix <- rbind(new_matrix, tmp.split[[i]])
}
# Do the plot originally asked for
plot(new_matrix[,1], new_matrix[,2])
@ Chl - 我一直在寻找 unlist 函数,它使没有循环的解决方案更好,尽管因为我已经编写了很多程序,我经常发现如果我的代码没有太大的影响,让我的代码更具可读性更好表现。这是 Chl 在 a 中的解决方案,矩阵稍微复杂一些:
# Test matrix
tmp.mtrx <- matrix(c("1;2", 55, "3;4", 75, "5;6", 85, "7;8", 88), ncol=2)
# The split
tmp.split <- strsplit(tmp.mtrx, ";")
# A vector with all the values, length = (ncol(tmp.mtrx) + 1)*nrow(tmp.mtrx)
tmp.data_vector <- unlist(tmp.split)
# Put it all together into a new matrix
new_matrix <- matrix(tmp.data_vector, ncol=(ncol(tmp.mtrx)+1), byrow=TRUE)
# Do the plot originally asked for
plot(new_matrix[,1], new_matrix[,2])