我从网上抓了一些东西给我这样的东西:
[1] "(Wirtschaft, 00:00)" "(Kultur, 23:42)" "(Sport, 23:38)" "(Politik, 23:16)"
[5] "(Sport, 22:29)" "(Panorama, 21:56)" "(Sport, 21:39)" "(Sport, 21:25)"
[9] "(Sport, 20:23)" "(Politik, 20:21)" "(Politik, 20:09)" "(Wissenschaft, 19:41)"
[13] "(Politik, 18:43)" "(Sport, 18:16)" "(Politik, 17:53)" "(Wirtschaft, 17:41)"
[17] "(Politik, 17:37)" "(Sport, 17:28)" "(Sport, 17:09)" "(Sport, 17:07)"
我现在想知道的是以下内容。 R怎么看到这个?我现在只想拥有观察(行)和变量(列)。但是,当我使用ncol()或nrow()时,它显示为NULL。有人能告诉我如何操纵日期,以便我有行和列。我知道有单独的功能,所有这一切,但每个人解释它是如此困难,你需要5年的经验来理解它。请帮助初学者学习。感谢
答案 0 :(得分:1)
一种解决方案可以采用以下步骤:
# Data
v <- c("(Wirtschaft, 00:00)", "(Kultur, 23:42)", "(Sport, 23:38)","(Politik, 23:16)",
"(Sport, 22:29)","(Panorama, 21:56)","(Sport, 21:39)", "(Sport, 21:25)",
"(Sport, 20:23)","(Politik, 20:21)","(Politik, 20:09)",
"(Wissenschaft, 19:41)","(Politik, 18:43)")
# Solution
library(dplyr)
library(tidyr)
x <- gsub("\\(|\\)", "", v, perl = T) %>% as.data.frame()
colnames(x) <- "Heading"
separate(x, "Heading", c("Item", "Time"), sep = ",")
Item Time
1 Wirtschaft 00:00
2 Kultur 23:42
3 Sport 23:38
4 Politik 23:16
5 Sport 22:29
6 Panorama 21:56
7 Sport 21:39
8 Sport 21:25
9 Sport 20:23
10 Politik 20:21
11 Politik 20:09
12 Wissenschaft 19:41
答案 1 :(得分:1)
以下是将您展示的字符串向量转换为data.frame
的解决方案,该结构包含行和列:
# Your current vector
scraped <- c("(Wirtschaft, 00:00)", "(Kultur, 23:42)", "(Sport, 23:38)", "(Politik, 23:16)")
这里我刚刚重新创建了一个数据样本,现在是:
> scraped
[1] "(Wirtschaft, 00:00)" "(Kultur, 23:42)"
[3] "(Sport, 23:38)" "(Politik, 23:16)"
现在我正在创建一个函数,它将删除此向量中每个元素的括号和逗号:
# Create a function to clean each element of the vector
clean <- function(x) {
# Replace brackets with blank strings
no_brackets <- gsub("[()]", "", x)
# Split the string at the comma
split <- strsplit(no_brackets, ", ")[[1]]
return(split)
}
您可以在矢量的单个元素上看到它是如何工作的:
> clean(scraped[1])
[1] "Wirtschaft" "00:00"
它取"(Wirtschaft, 00:00)"
并将一个元素分成两个,同时删除括号和逗号。
接下来,我使用函数scraped
将此函数应用于sapply
的每个元素:
# Apply the clean function to each element of your vector
mat <- sapply(scraped, clean)
现在我们有一个矩阵:
> mat
(Wirtschaft, 00:00) (Kultur, 23:42) (Sport, 23:38) (Politik, 23:16)
[1,] "Wirtschaft" "Kultur" "Sport" "Politik"
[2,] "00:00" "23:42" "23:38" "23:16"
所以现在这是一种行和列格式。然而,在同一列中具有相同类型的变量更为常见,并且每一个观察由一行说明,即另一个向上。将它们放在名为data.frame
而不是matrix
的数据结构中也更有用。因此,在最后一步中,我将使用t
函数转置矩阵,并将其转换为具有data.frame
函数的数据框:
# Transpose the matrix and convert it to a data.frame
df <- data.frame(t(mat), stringsAsFactors=FALSE)
现在数据集是一个如下所示的data.frame:
> df
X1 X2
(Wirtschaft, 00:00) Wirtschaft 00:00
(Kultur, 23:42) Kultur 23:42
(Sport, 23:38) Sport 23:38
(Politik, 23:16) Politik 23:16
您可以使用语法df[row, column]
访问data.frame中的不同值:
> df[1, 1] # The first row and first column of df
[1] "Wirtschaft"
> df[3, 2] # The third row and second column of df
[1] "23:38"