5

私は を初めて使用し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
.       .
.       .
.       .

このデータの散布図を作成するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

8

まず、データは別々の列にある必要があります。ファイルには「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 からどのように出力されるかによって異なります。

于 2011-08-05T14:16:26.573 に答える
4

@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 のソリューションを次に示します。

# 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])
于 2011-08-05T21:01:16.040 に答える